mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Illumos 5161 - add tunable for number of metaslabs per vdev
5161 add tunable for number of metaslabs per vdev Reviewed by: Alex Reece <alex.reece@delphix.com> Reviewed by: Christopher Siden <christopher.siden@delphix.com> Reviewed by: George Wilson <george.wilson@delphix.com> Reviewed by: Paul Dagnelie <paul.dagnelie@delphix.com> Reviewed by: Saso Kiselkov <skiselkov.ml@gmail.com> Reviewed by: Richard Elling <richard.elling@gmail.com> Approved by: Richard Lowe <richlowe@richlowe.net> References: https://www.illumos.org/issues/5161 https://github.com/illumos/illumos-gate/commit/bf3e216 Ported by: Turbo Fredriksson <turbo@bayour.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #2698
This commit is contained in:
		
							parent
							
								
									ebcf49365a
								
							
						
					
					
						commit
						b8bcca18f7
					
				| @ -179,6 +179,17 @@ Enable use of the fragmentation metric in computing metaslab weights. | |||||||
| Use \fB1\fR for yes (default) and \fB0\fR for no. | Use \fB1\fR for yes (default) and \fB0\fR for no. | ||||||
| .RE | .RE | ||||||
| 
 | 
 | ||||||
|  | .sp | ||||||
|  | .ne 2 | ||||||
|  | .na | ||||||
|  | \fBmetaslabs_per_vdev\fR (int) | ||||||
|  | .ad | ||||||
|  | .RS 12n | ||||||
|  | When a vdev is added, it will be divided into approximately (but no more than) this number of metaslabs. | ||||||
|  | .sp | ||||||
|  | Default value: \fB200\fR. | ||||||
|  | .RE | ||||||
|  | 
 | ||||||
| .sp | .sp | ||||||
| .ne 2 | .ne 2 | ||||||
| .na | .na | ||||||
|  | |||||||
| @ -45,6 +45,12 @@ | |||||||
| #include <sys/dsl_scan.h> | #include <sys/dsl_scan.h> | ||||||
| #include <sys/zvol.h> | #include <sys/zvol.h> | ||||||
| 
 | 
 | ||||||
|  | /*
 | ||||||
|  |  * When a vdev is added, it will be divided into approximately (but no | ||||||
|  |  * more than) this number of metaslabs. | ||||||
|  |  */ | ||||||
|  | int metaslabs_per_vdev = 200; | ||||||
|  | 
 | ||||||
| /*
 | /*
 | ||||||
|  * Virtual device management. |  * Virtual device management. | ||||||
|  */ |  */ | ||||||
| @ -1582,9 +1588,9 @@ void | |||||||
| vdev_metaslab_set_size(vdev_t *vd) | vdev_metaslab_set_size(vdev_t *vd) | ||||||
| { | { | ||||||
| 	/*
 | 	/*
 | ||||||
| 	 * Aim for roughly 200 metaslabs per vdev. | 	 * Aim for roughly metaslabs_per_vdev (default 200) metaslabs per vdev. | ||||||
| 	 */ | 	 */ | ||||||
| 	vd->vdev_ms_shift = highbit64(vd->vdev_asize / 200); | 	vd->vdev_ms_shift = highbit64(vd->vdev_asize / metaslabs_per_vdev); | ||||||
| 	vd->vdev_ms_shift = MAX(vd->vdev_ms_shift, SPA_MAXBLOCKSHIFT); | 	vd->vdev_ms_shift = MAX(vd->vdev_ms_shift, SPA_MAXBLOCKSHIFT); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -3387,4 +3393,9 @@ EXPORT_SYMBOL(vdev_degrade); | |||||||
| EXPORT_SYMBOL(vdev_online); | EXPORT_SYMBOL(vdev_online); | ||||||
| EXPORT_SYMBOL(vdev_offline); | EXPORT_SYMBOL(vdev_offline); | ||||||
| EXPORT_SYMBOL(vdev_clear); | EXPORT_SYMBOL(vdev_clear); | ||||||
|  | 
 | ||||||
|  | module_param(metaslabs_per_vdev, int, 0644); | ||||||
|  | MODULE_PARM_DESC(metaslabs_per_vdev, | ||||||
|  | 	"Divide added vdev into approximately (but no more than) this number " | ||||||
|  | 	"of metaslabs"); | ||||||
| #endif | #endif | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Matthew Ahrens
						Matthew Ahrens