aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niewöhner <[email protected]>2019-07-30 18:59:38 +0200
committerMatthew Ahrens <[email protected]>2019-07-30 09:59:38 -0700
commit85ce79bbc8cf17f100eb4ae6a0d1b1ce2e2dd9d9 (patch)
tree0d88807149003012ff6a59f3ab32fe9ef1ca74d2
parent0eb8ba6ab68801d4b0e6280e7388514a6355fc86 (diff)
Increase default zcmd allocation to 256K
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. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: George Melikov <[email protected]> Signed-off-by: Colin Ian King <[email protected]> Signed-off-by: Michael Niewöhner <[email protected]> Closes #9084
-rw-r--r--lib/libzfs/libzfs_util.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/libzfs/libzfs_util.c b/lib/libzfs/libzfs_util.c
index 9dcbb9b60..27d630d4f 100644
--- a/lib/libzfs/libzfs_util.c
+++ b/lib/libzfs/libzfs_util.c
@@ -1140,7 +1140,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);