summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJitendra Patidar <[email protected]>2021-04-16 02:19:27 +0530
committerBrian Behlendorf <[email protected]>2021-04-19 15:22:57 -0700
commit4c925936e3e392771a7c2820d847079e723bcf70 (patch)
treedb0900bc3f687c3a59e5ad10e67473a874664e89 /lib
parent15d3470c2e4d66b926cab047b403948cb95d91fa (diff)
ZFS traverse_visitbp optimization to limit prefetch
Traversal code, traverse_visitbp() does visit blocks recursively. Indirect (Non L0) Block of size 128k could contain, 1024 block pointers of 128 bytes. In case of full traverse OR incremental traverse, where all blocks were modified, it could traverse large number of blocks pointed by indirect. Traversal code does issue prefetch of blocks traversed below indirect. This could result into large number of async reads queued on vdev queue. So, account for prefetch issued for blocks pointed by indirect and limit max prefetch in one go. Module Param: zfs_traverse_indirect_prefetch_limit: Limit of prefetch while traversing an indirect block. Local counters: prefetched: Local counter to account for number prefetch done. pidx: Index for which next prefetch to be issued. ptidx: Index at which next prefetch to be triggered. Keep "ptidx" somewhere in the middle of blocks prefetched, so that blocks prefetch read gets the enough time window before their demand read is issued. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Alexander Motin <[email protected]> Signed-off-by: Jitendra Patidar <[email protected]> Closes #11802 Closes #11803
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions