diff options
author | Matthew Macy <[email protected]> | 2020-09-04 11:13:27 -0700 |
---|---|---|
committer | GitHub <[email protected]> | 2020-09-04 11:13:27 -0700 |
commit | 7432d29760ebce2415a696bb5fb443c50969e7be (patch) | |
tree | e8535a53951f92fc7c43d3bc3511803bab52fa04 /module/zfs/spa.c | |
parent | ef55446a9ce6a666eb843126eca8a715ff3bb0d6 (diff) |
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 <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Matt Macy <[email protected]>
Closes #10872
Diffstat (limited to 'module/zfs/spa.c')
-rw-r--r-- | module/zfs/spa.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/module/zfs/spa.c b/module/zfs/spa.c index 015996d15..0bf0e366a 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -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); } |