mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-18 02:20:59 +03:00
FreeBSD: reduce priority of ZIO_TASKQ_ISSUE writes by a larger value
On FreeBSD, if priorities divided by four (RQ_PPQ) are equal then a difference between them is insignificant. In other words, incrementing pri by only one as on Linux is insufficient. Reviewed-by: Alexander Motin <mav@FreeBSD.org> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Matt Macy <mmacy@FreeBSD.org> Closes #10872
This commit is contained in:
parent
c0234eab65
commit
ee73a8ff3d
@ -1000,13 +1000,25 @@ spa_taskqs_init(spa_t *spa, zio_type_t t, zio_taskq_type_t q)
|
|||||||
/*
|
/*
|
||||||
* The write issue taskq can be extremely CPU
|
* The write issue taskq can be extremely CPU
|
||||||
* intensive. Run it at slightly less important
|
* intensive. Run it at slightly less important
|
||||||
* priority than the other taskqs. Under Linux this
|
* priority than the other taskqs.
|
||||||
* means incrementing the priority value on platforms
|
*
|
||||||
* like illumos it should be decremented.
|
* Under Linux and FreeBSD this means incrementing
|
||||||
|
* the priority value as opposed to platforms like
|
||||||
|
* illumos where it should be decremented.
|
||||||
|
*
|
||||||
|
* On FreeBSD, if priorities divided by four (RQ_PPQ)
|
||||||
|
* are equal then a difference between them is
|
||||||
|
* insignificant.
|
||||||
*/
|
*/
|
||||||
if (t == ZIO_TYPE_WRITE && q == ZIO_TASKQ_ISSUE)
|
if (t == ZIO_TYPE_WRITE && q == ZIO_TASKQ_ISSUE) {
|
||||||
|
#if defined(__linux__)
|
||||||
pri++;
|
pri++;
|
||||||
|
#elif defined(__FreeBSD__)
|
||||||
|
pri += 4;
|
||||||
|
#else
|
||||||
|
#error "unknown OS"
|
||||||
|
#endif
|
||||||
|
}
|
||||||
tq = taskq_create_proc(name, value, pri, 50,
|
tq = taskq_create_proc(name, value, pri, 50,
|
||||||
INT_MAX, spa->spa_proc, flags);
|
INT_MAX, spa->spa_proc, flags);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user