[Pkg-zfsonlinux-devel] [SCM] zfs branch, master, updated. debian/0.6.5.8-3-55-gab6f41b
Aron Xu
aron at debian.org
Tue Oct 31 12:32:46 UTC 2017
The following commit has been merged in the master branch:
commit 7c82c5971b967abe9f7ef03cdb8f7e9f9a773766
Author: Colin Ian King <colin.king at canonical.com>
Date: Tue Oct 31 19:12:42 2017 +0800
Improve cloning performance for large numbers of clones (LP: #1567557)
Bump zcmd buffer from 16K to 256K.
diff --git a/debian/patches/2000-increase-default-zcmd-allocation-to-256K.patch b/debian/patches/2000-increase-default-zcmd-allocation-to-256K.patch
new file mode 100644
index 0000000..c4e9f2e
--- /dev/null
+++ b/debian/patches/2000-increase-default-zcmd-allocation-to-256K.patch
@@ -0,0 +1,67 @@
+Increase default zcmd allocation to 256K (LP: #567557)
+
+When creating hundreds of clones (for example using containers with
+LXD) cloning slows down as the number of clones increases over time.
+The reason for this is that the fetching of the clone information
+using a small zcmd buffer requires two ioctl calls, one to determine
+the size and a second to return the data. However, this requires
+gathering the data twice, once to determine the size and again to
+populate the zcmd buffer to return it to userspace.
+
+These are expensive ioctl() calls, so instead, make the default buffer
+size much larger: 256K. This may sound large, but on 64 bit systems
+running ZFS this is not a huge chunk of memory for the speed
+improvement we gains for large sets of clones:
+
+ 16K zcmd 256K zcmd
+Clones Time Clones Time Clone % improvement
+ (secs) per sec (secs) per sec
+100 7 14.29 5 20.00 28.57
+200 10 20.00 9 22.22 10.00
+300 19 15.79 18 16.67 5.26
+400 22 18.18 22 18.18 0.00
+500 29 17.24 29 17.24 0.00
+600 39 15.38 39 15.38 0.00
+700 46 15.22 45 15.56 2.17
+800 58 13.79 51 15.69 12.07
+900 74 12.16 61 14.75 17.57
+1000 90 11.11 74 13.51 17.78
+1100 98 11.22 87 12.64 11.22
+1200 102 11.76 95 12.63 6.86
+1300 113 11.50 104 12.50 7.96
+1400 143 9.79 109 12.84 23.78
+1500 145 10.34 132 11.36 8.97
+1600 165 9.70 145 11.03 12.12
+1700 187 9.09 156 10.90 16.58
+1800 210 8.57 166 10.84 20.95
+1900 226 8.41 183 10.38 19.03
+2000 256 7.81 198 10.10 22.66
+2200 311 7.07 238 9.24 23.47
+2400 373 6.43 271 8.86 27.35
+2600 487 5.34 316 8.23 35.11
+3000 619 4.85 426 7.04 31.18
+3400 915 3.72 549 6.19 40.00
+4000 1332 3.00 923 4.33 30.71
+
+As one can see, with > 2000 clones we get 25-40% speed
+improvement.
+
+This patch was originally suggested by Brian Behlendorf
+(see https://github.com/zfsonlinux/zfs/issues/6372), however
+this fix is a more generic fix to cover all zcmd cases.
+
+Signed-off-by: Colin Ian King <colin.king at canonical.com>
+
+Index: zfs/lib/libzfs/libzfs_util.c
+===================================================================
+--- zfs.orig/lib/libzfs/libzfs_util.c
++++ zfs/lib/libzfs/libzfs_util.c
+@@ -1354,7 +1354,7 @@ int
+ zcmd_alloc_dst_nvlist(libzfs_handle_t *hdl, zfs_cmd_t *zc, size_t len)
+ {
+ if (len == 0)
+- len = 16 * 1024;
++ len = 256 * 1024;
+ zc->zc_nvlist_dst_size = len;
+ zc->zc_nvlist_dst =
+ (uint64_t)(uintptr_t)zfs_alloc(hdl, zc->zc_nvlist_dst_size);
diff --git a/debian/patches/series b/debian/patches/series
index d6f6f87..6d58744 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -7,3 +7,4 @@ enable-zed.patch
0008-dracut-make-module-setup.sh-shebang-explicit.patch
0009-add-man-page-reference-to-systemd-units.patch
0010-fix-install-path-of-zpool.d-scripts.patch
+2000-increase-default-zcmd-allocation-to-256K.patch
--
UNNAMED PROJECT
More information about the Pkg-zfsonlinux-devel
mailing list