]> granicus.if.org Git - zfs/commitdiff
Convert zfs_mg_noalloc_threshold to a module parameter and document
authorTim Chase <tim@chase2k.com>
Thu, 10 Jul 2014 03:36:03 +0000 (22:36 -0500)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 16 Jul 2014 23:49:25 +0000 (16:49 -0700)
The parameter was added as illumos issue 4081 which was committed to
zfsonlinux in ac72fac3eaa569902cad88053167f7d74e7fe7e4.  This patch
documents the parameter and allows for it to be set as a module parameter.

Signed-off-by: Tim Chase <tim@chase2k.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #2483

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

index 586712940a87a84e75b1760b685859f64e958b3d..d3aa2e6b043b12cae298bc87ccdb41c069a72143 100644 (file)
@@ -729,6 +729,32 @@ Disable meta data compression
 Use \fB1\fR for yes and \fB0\fR for no (default).
 .RE
 
+.sp
+.ne 2
+.na
+\fBzfs_mg_noalloc_threshold\fR (int)
+.ad
+.RS 12n
+Defines a threshold at which metaslab groups should be eligible for
+allocations.  The value is expressed as a percentage of free space
+beyond which a metaslab group is always eligible for allocations.
+If a metaslab group's free space is less than or equal to the
+the threshold, the allocator will avoid allocating to that group
+unless all groups in the pool have reached the threshold.  Once all
+groups have reached the threshold, all groups are allowed to accept
+allocations.  The default value of 0 disables the feature and causes
+all metaslab groups to be eligible for allocations.
+
+This parameter allows to deal with pools having heavily imbalanced
+vdevs such as would be the case when a new vdev has been added.
+Setting the threshold to a non-zero percentage will stop allocations
+from being made to vdevs that aren't filled to the specified percentage
+and allow lesser filled vdevs to acquire more allocations than they
+otherwise would under the old \fBzfs_mg_alloc_failures\fR facility.
+.sp
+Default value: \fB0\fR.
+.RE
+
 .sp
 .ne 2
 .na
index 6aa5e063f47dd5229788da0a7414b8a19edde5b0..a8b4b0a0e578b9cc6f245354298e68304f806a64 100644 (file)
@@ -2120,4 +2120,8 @@ MODULE_PARM_DESC(metaslab_debug_load, "load all metaslabs during pool import");
 module_param(metaslab_debug_unload, int, 0644);
 MODULE_PARM_DESC(metaslab_debug_unload,
        "prevent metaslabs from being unloaded");
+
+module_param(zfs_mg_noalloc_threshold, int, 0644);
+MODULE_PARM_DESC(zfs_mg_noalloc_threshold,
+       "percentage of free space for metaslab group to allow allocation");
 #endif /* _KERNEL && HAVE_SPL */