freebsd-nq/cmd
Matthew Ahrens 9cdf7b1f6b
Improve zfs destroy performance with zio_t-free zio_free()
When "zfs destroy" is run, it completes quickly, and in the background
we locate the blocks to free and free them.  This background activity
can be observed with `zpool get freeing` and `zpool wait -t free ...`.

This background activity is processed by a single thread (the spa_sync
thread) which calls zio_free() on each of the blocks to free.  With even
modest storage performance, the CPU consumption of zio_free() can be the
performance bottleneck.

Performance of zio_free() can be improved by not actually creating a
zio_t in the common case (non-dedup, non-gang), instead calling
metaslab_free() directly.  This avoids the CPU cost of allocating the
zio_t, and more importantly the cost of adding and later removing this
zio_t from the parent zio's child list.

The result is that performance of background freeing more than doubles,
from 0.6 million blocks per second to 1.3 million blocks per second.

Reviewed-by: Paul Dagnelie <pcd@delphix.com>
Reviewed-by: Serapheim Dimitropoulos <serapheim@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: George Wilson <gwilson@delphix.com>
Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
Closes #10034
2020-02-28 14:49:44 -08:00
..
arc_summary arc_summary: Make get_descriptions per platform 2020-02-27 17:15:06 -08:00
arcstat Add FreeBSD code to arc_summary and arcstat 2019-11-30 15:43:23 -08:00
dbufstat Detect if sed supports --in-place 2019-10-16 19:19:48 -07:00
fsck_zfs Fix typos in cmd/ 2019-08-30 09:43:30 -07:00
mount_zfs OpenZFS restructuring - libspl 2019-10-02 10:39:48 -07:00
raidz_test Add AltiVec RAID-Z 2020-01-23 11:01:24 -08:00
vdev_id Fix typos in cmd/ 2019-08-30 09:43:30 -07:00
zdb Improve zfs destroy performance with zio_t-free zio_free() 2020-02-28 14:49:44 -08:00
zed Systemd mount generator: Generate noauto units; add control properties 2020-02-14 15:32:55 -08:00
zfs Add missing newline after zfs redact help message 2020-02-25 16:20:50 -08:00
zgenhostid bash scripts: use /usr/bin/env for bash shebangs 2020-02-10 13:13:46 -08:00
zhack Add zfs_file_* interface, remove vnodes 2019-11-21 09:32:57 -08:00
zinject Remove ECKSUM alias in zinject 2019-11-01 10:31:42 -07:00
zpool Make zpool.d/iostat work on FreeBSD 2020-02-14 08:37:40 -08:00
zstreamdump fix zstreamdump -C 2020-02-13 11:24:57 -08:00
ztest Replace ASSERTV macro with compiler annotation 2019-12-05 12:37:00 -08:00
zvol_id OpenZFS restructuring - libspl 2019-10-02 10:39:48 -07:00
zvol_wait zvol_wait should ignore redacted zvols 2019-11-06 10:51:19 -08:00
Makefile.am Isolate code specific to Linux in cmd/ 2019-11-11 09:24:04 -08:00