aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEtienne Dechamps <[email protected]>2015-05-10 16:40:20 +0100
committerBrian Behlendorf <[email protected]>2015-06-22 14:19:38 -0700
commit99b14de42104021f6b7d88118db010d8246bc0c0 (patch)
tree1817cf665c5daed60392277102efd679d2b66f36
parente8fe6684a5128427e6ad1e75eb548b9fd0c482aa (diff)
Make metaslab_aliquot a module parameter.
This seems generally useful. metaslab_aliquot is the ZFS allocation granularity, which is roughly equivalent to what is called the stripe size in traditional RAID arrays. It seems relevant to performance tuning. Signed-off-by: Etienne Dechamps <[email protected]> Signed-off-by: Brian Behlendorf <[email protected]>
-rw-r--r--man/man5/zfs-module-parameters.514
-rw-r--r--module/zfs/metaslab.c5
2 files changed, 18 insertions, 1 deletions
diff --git a/man/man5/zfs-module-parameters.5 b/man/man5/zfs-module-parameters.5
index 250adc9ef..14c7fb81a 100644
--- a/man/man5/zfs-module-parameters.5
+++ b/man/man5/zfs-module-parameters.5
@@ -137,6 +137,20 @@ Default value: \fB8,388,608\fR.
.sp
.ne 2
.na
+\fBmetaslab_aliquot\fR (ulong)
+.ad
+.RS 12n
+Metaslab granularity, in bytes. This is roughly similar to what would be
+referred to as the "stripe size" in traditional RAID arrays. In normal
+operation, ZFS will try to write this amount of data to a top-level vdev
+before moving on to the next one.
+.sp
+Default value: \fB524,288\fR.
+.RE
+
+.sp
+.ne 2
+.na
\fBmetaslab_bias_enabled\fR (int)
.ad
.RS 12n
diff --git a/module/zfs/metaslab.c b/module/zfs/metaslab.c
index 15859908f..3b556b6db 100644
--- a/module/zfs/metaslab.c
+++ b/module/zfs/metaslab.c
@@ -59,7 +59,7 @@
* operation, we will try to write this amount of data to a top-level vdev
* before moving on to the next one.
*/
-uint64_t metaslab_aliquot = 512ULL << 10;
+unsigned long metaslab_aliquot = 512 << 10;
uint64_t metaslab_gang_bang = SPA_MAXBLOCKSIZE + 1; /* force gang blocks */
@@ -2707,6 +2707,7 @@ metaslab_check_free(spa_t *spa, const blkptr_t *bp)
}
#if defined(_KERNEL) && defined(HAVE_SPL)
+module_param(metaslab_aliquot, ulong, 0644);
module_param(metaslab_debug_load, int, 0644);
module_param(metaslab_debug_unload, int, 0644);
module_param(metaslab_preload_enabled, int, 0644);
@@ -2717,6 +2718,8 @@ module_param(metaslab_fragmentation_factor_enabled, int, 0644);
module_param(metaslab_lba_weighting_enabled, int, 0644);
module_param(metaslab_bias_enabled, int, 0644);
+MODULE_PARM_DESC(metaslab_aliquot,
+ "allocation granularity (a.k.a. stripe size)");
MODULE_PARM_DESC(metaslab_debug_load,
"load all metaslabs when pool is first opened");
MODULE_PARM_DESC(metaslab_debug_unload,