zfs/man/man5
Jitendra Patidar 4c925936e3 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 <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Signed-off-by: Jitendra Patidar <jitendra.patidar@nutanix.com>
Closes #11802 
Closes #11803
2021-04-19 15:22:57 -07:00
..
Makefile.am Remove hard coded "Linux" OS from manpages 2020-08-21 11:55:47 -07:00
spl-module-parameters.5 man: Canonicalize .TH usage 2020-08-24 21:25:28 -07:00
vdev_id.conf.5 man: Canonicalize .TH usage 2020-08-24 21:25:28 -07:00
zfs-events.5 man: Canonicalize .TH usage 2020-08-24 21:25:28 -07:00
zfs-module-parameters.5 ZFS traverse_visitbp optimization to limit prefetch 2021-04-19 15:22:57 -07:00
zpool-features.5 Improvements to the 'compatibility' property 2021-04-14 13:23:08 -07:00