mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Improve sorted scan memory accounting
Since we use two B-trees q_exts_by_size and q_exts_by_addr, we should count 2x sizeof (range_seg_gap_t) per node. And since average B-tree memory efficiency is about 75%, we should increase it to 3x. Previous code under-counted up to 30% of the memory usage. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Alexander Motin <mav@FreeBSD.org> Sponsored-By: iXsystems, Inc. Closes #13537
This commit is contained in:
		
							parent
							
								
									cc565f557b
								
							
						
					
					
						commit
						6ff89fe126
					
				| @ -1268,9 +1268,12 @@ dsl_scan_should_clear(dsl_scan_t *scn) | |||||||
| 		mutex_enter(&tvd->vdev_scan_io_queue_lock); | 		mutex_enter(&tvd->vdev_scan_io_queue_lock); | ||||||
| 		queue = tvd->vdev_scan_io_queue; | 		queue = tvd->vdev_scan_io_queue; | ||||||
| 		if (queue != NULL) { | 		if (queue != NULL) { | ||||||
| 			/* # extents in exts_by_size = # in exts_by_addr */ | 			/*
 | ||||||
|  | 			 * # of extents in exts_by_size = # in exts_by_addr. | ||||||
|  | 			 * B-tree efficiency is ~75%, but can be as low as 50%. | ||||||
|  | 			 */ | ||||||
| 			mused += zfs_btree_numnodes(&queue->q_exts_by_size) * | 			mused += zfs_btree_numnodes(&queue->q_exts_by_size) * | ||||||
| 			    sizeof (range_seg_gap_t) + queue->q_sio_memused; | 			    3 * sizeof (range_seg_gap_t) + queue->q_sio_memused; | ||||||
| 		} | 		} | ||||||
| 		mutex_exit(&tvd->vdev_scan_io_queue_lock); | 		mutex_exit(&tvd->vdev_scan_io_queue_lock); | ||||||
| 	} | 	} | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Alexander Motin
						Alexander Motin