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 <etienne@edechamps.fr>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
This commit is contained in:
Etienne Dechamps 2015-05-10 16:40:20 +01:00 committed by Brian Behlendorf
parent e8fe6684a5
commit 99b14de421
2 changed files with 18 additions and 1 deletions

View File

@ -134,6 +134,20 @@ Max write bytes per interval
Default value: \fB8,388,608\fR.
.RE
.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

View File

@ -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,