]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Increase zfs_vdev_async_write_min_active to 2
authorDHE <git@dehacked.net>
Sun, 26 Mar 2017 02:36:28 +0000 (22:36 -0400)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 14 Apr 2017 21:03:44 +0000 (14:03 -0700)
Resilver operations frequently cause only a small amount of dirty data
to be written to disk at a time, resulting in the IO scheduler to only
issue 1 write at a time to the resilvering disk. When it is rotational
media the drive will often travel past the next sector to be written
before receiving a write command from ZFS, significantly delaying the
write of the next sector.

Raise zfs_vdev_async_write_min_active so that drives are kept fed
during resilvering.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: DHE <git@dehacked.net>
Issue #4825
Closes #5926

man/man5/zfs-module-parameters.5
module/zfs/vdev_queue.c

index 72ff0686c79eb65fe78617eee6cce0e740e496e1..ec07cda765f7ec094fbe2b173e844bedc36f6ad4 100644 (file)
@@ -1052,7 +1052,12 @@ Default value: \fB10\fR.
 Minimum asynchronous write I/Os active to each device.
 See the section "ZFS I/O SCHEDULER".
 .sp
-Default value: \fB1\fR.
+Lower values are associated with better latency on rotational media but poorer
+resilver performance. The default value of 2 was chosen as a compromise. A
+value of 3 has been shown to improve resilver performance further at a cost of
+further increasing latency.
+.sp
+Default value: \fB2\fR.
 .RE
 
 .sp
index d969cfeed53e574317ec4c29e90a411bdd9e03a4..2439f2951c23f3cbb5596421ca2df58bba5cb167 100644 (file)
@@ -148,7 +148,7 @@ uint32_t zfs_vdev_sync_write_min_active = 10;
 uint32_t zfs_vdev_sync_write_max_active = 10;
 uint32_t zfs_vdev_async_read_min_active = 1;
 uint32_t zfs_vdev_async_read_max_active = 3;
-uint32_t zfs_vdev_async_write_min_active = 1;
+uint32_t zfs_vdev_async_write_min_active = 2;
 uint32_t zfs_vdev_async_write_max_active = 10;
 uint32_t zfs_vdev_scrub_min_active = 1;
 uint32_t zfs_vdev_scrub_max_active = 2;