From dcb6bed1dfc7ca6221a556f19d4252272ccfda33 Mon Sep 17 00:00:00 2001 From: DHE Date: Wed, 16 Dec 2015 14:22:32 -0500 Subject: [PATCH] Make zio_taskq_batch_pct user configurable Adds zio_taskq_batch_pct as an exported module parameter, allowing users to modify it at module load time. Signed-off-by: DHE Signed-off-by: Brian Behlendorf Closes #4110 --- man/man5/zfs-module-parameters.5 | 17 +++++++++++++++++ module/zfs/spa.c | 7 ++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/man/man5/zfs-module-parameters.5 b/man/man5/zfs-module-parameters.5 index e1af27d14..6be382eac 100644 --- a/man/man5/zfs-module-parameters.5 +++ b/man/man5/zfs-module-parameters.5 @@ -1598,6 +1598,23 @@ Prioritize requeued I/O Default value: \fB0\fR. .RE +.sp +.ne 2 +.na +\fBzio_taskq_batch_pct\fR (uint) +.ad +.RS 12n +Percentage of online CPUs (or CPU cores, etc) which will run a worker thread +for IO. These workers are responsible for IO work such as compression and +checksum calculations. Fractional number of CPUs will be rounded down. +.sp +The default value of 75 was chosen to avoid using all CPUs which can result in +latency issues and inconsistent application performance, especially when high +compression is enabled. +.sp +Default value: \fB75\fR. +.RE + .sp .ne 2 .na diff --git a/module/zfs/spa.c b/module/zfs/spa.c index 2e23a341f..b4831a724 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -867,7 +867,7 @@ spa_taskqs_init(spa_t *spa, zio_type_t t, zio_taskq_type_t q) case ZTI_MODE_BATCH: batch = B_TRUE; flags |= TASKQ_THREADS_CPU_PCT; - value = zio_taskq_batch_pct; + value = MIN(zio_taskq_batch_pct, 100); break; default: @@ -6804,4 +6804,9 @@ MODULE_PARM_DESC(spa_load_verify_metadata, module_param(spa_load_verify_data, int, 0644); MODULE_PARM_DESC(spa_load_verify_data, "Set to traverse data on pool import"); + +module_param(zio_taskq_batch_pct, uint, 0444); +MODULE_PARM_DESC(zio_taskq_batch_pct, + "Percentage of CPUs to run an IO worker thread"); + #endif