mirror_zfs/lib
Matthew Ahrens b3212d2fa6
Improve performance of zio_taskq_member
__zio_execute() calls zio_taskq_member() to determine if we are running
in a zio interrupt taskq, in which case we may need to switch to
processing this zio in a zio issue taskq.  The call to
zio_taskq_member() can become a performance bottleneck when we are
processing a high rate of zio's.

zio_taskq_member() calls taskq_member() on each of the zio interrupt
taskqs, of which there are 21.  This is slow because each call to
taskq_member() does tsd_get(taskq_tsd), which on Linux is relatively
slow.

This commit improves the performance of zio_taskq_member() by having it
cache the value of tsd_get(taskq_tsd), reducing the number of those
calls to 1/21th of the current behavior.

In a test case running `zfs send -c >/dev/null` of a filesystem with
small blocks (average 2.5KB/block), zio_taskq_member() was using 6.7% of
one CPU, and with this change it is reduced to 1.3%.  Overall time to
perform the `zfs send` reduced by 10% (~150,000 block/sec to ~165,000
blocks/sec).

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Serapheim Dimitropoulos <serapheim@delphix.com>
Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Reviewed-by: Tony Nguyen <tony.nguyen@delphix.com>
Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
Closes #10070
2020-03-03 10:29:38 -08:00
..
libavl OpenZFS restructuring - libspl 2019-10-02 10:39:48 -07:00
libefi cppcheck: (error) Memory leak: vtoc 2019-12-18 17:25:04 -08:00
libicp ICP: Improve AES-GCM performance 2020-02-10 12:59:50 -08:00
libnvpair Use correct format string when printing int8 2019-10-20 20:37:30 -07:00
libshare Fix static data to link with -fno-common 2020-02-06 09:25:29 -08:00
libspl Linux 5.6 compat: time_t 2020-02-27 09:31:02 -08:00
libtpool OpenZFS restructuring - libspl 2019-10-02 10:39:48 -07:00
libunicode OpenZFS restructuring - libspl 2019-10-02 10:39:48 -07:00
libuutil Remove unused headers from uu_string.c 2019-10-25 13:53:50 -07:00
libzfs Don't open zfs control device exclusively 2020-02-28 14:54:14 -08:00
libzfs_core Implement bookmark copying 2020-02-11 13:19:12 -08:00
libzpool Improve performance of zio_taskq_member 2020-03-03 10:29:38 -08:00
libzutil Add wrapper stub for zfs_cmd ioctl to libzpool 2019-11-12 10:40:39 -08:00
Makefile.am Add libzutil for libzfs or libzpool consumers 2018-11-05 11:22:33 -08:00