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
|
||||
* intensive. Run it at slightly less important
|
||||
* priority than the other taskqs. Under Linux this
|
||||
* means incrementing the priority value on platforms
|
||||
* like illumos it should be decremented.
|
||||
* priority than the other taskqs.
|
||||
*
|
||||
* 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++;
|
||||
|
||||
#elif defined(__FreeBSD__)
|
||||
pri += 4;
|
||||
#else
|
||||
#error "unknown OS"
|
||||
#endif
|
||||
}
|
||||
tq = taskq_create_proc(name, value, pri, 50,
|
||||
INT_MAX, spa->spa_proc, flags);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue