diff options
author | Michael Niewöhner <[email protected]> | 2019-07-30 18:59:38 +0200 |
---|---|---|
committer | Matthew Ahrens <[email protected]> | 2019-07-30 09:59:38 -0700 |
commit | 85ce79bbc8cf17f100eb4ae6a0d1b1ce2e2dd9d9 (patch) | |
tree | 0d88807149003012ff6a59f3ab32fe9ef1ca74d2 | |
parent | 0eb8ba6ab68801d4b0e6280e7388514a6355fc86 (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.c | 2 |
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); |