mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-25 18:59:33 +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
4ed5e25074
commit
87b46d63b2
@ -1276,9 +1276,12 @@ dsl_scan_should_clear(dsl_scan_t *scn)
|
||||
mutex_enter(&tvd->vdev_scan_io_queue_lock);
|
||||
queue = tvd->vdev_scan_io_queue;
|
||||
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) *
|
||||
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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user