]> git.proxmox.com Git - mirror_zfs.git/commit - module/zfs/arc.c
Update all default taskq settings
authorBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 3 Jun 2015 18:43:30 +0000 (11:43 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 25 Jun 2015 15:58:16 +0000 (08:58 -0700)
commitaa9af22cdf8d16c197974c3a478d2053b3bed498
tree788727837dbf662d4fd5e6551a0e1d3b8d641e0f
parentef56b0780c80ebb0b1e637b8b8c79530a8ab3201
Update all default taskq settings

Over the years the default values for the taskqs used on Linux have
differed slightly from illumos.  In the vast majority of cases this
was done to avoid creating an obnoxious number of idle threads which
would pollute the process listing.

With the addition of support for dynamic taskqs all multi-threaded
queues should be created as dynamic taskqs.  This allows us to get
the best of both worlds.

* The illumos default values for the I/O pipeline can be restored.
These values are known to work well for most workloads.  The only
exception is the zio write interrupt taskq which is changed to
ZTI_P(12, 8).  At least under Linux more threads has been shown
to improve performance, see commit 7e55f4e.

* Reduces the number of idle threads on the system when it's not
under heavy load.  The maximum number of threads will only be
created when they are required.

* Remove the vdev_file_taskq and rely on the system_taskq instead
which is now dynamic and may have up to 64-threads.  Again this
brings us back inline with upstream.

* Tasks dispatched with taskq_dispatch_ent() are allowed to use
dynamic taskqs.  The Linux taskq implementation supports this.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tim Chase <tim@chase2k.com>
Closes #3507
include/sys/vdev_file.h
lib/libzpool/taskq.c
module/zfs/arc.c
module/zfs/dsl_pool.c
module/zfs/metaslab.c
module/zfs/spa.c
module/zfs/spa_misc.c
module/zfs/txg.c
module/zfs/vdev_file.c
module/zfs/zvol.c