HomeFreeBSD

Improve speculative prefetcher for block cloning

Description

Improve speculative prefetcher for block cloning

  • Issue prescient prefetches for demand indirect blocks after the

first one. It should be quite rare for reads/writes, but much more
useful for cloning due to much bigger (up to 1022 blocks) accesses.
It covers the gap during the first couple accesses when we can not
speculate yet, but we know what is needed right now. It reduces
dbuf_hold() sync read delays in dmu_buf_hold_array_by_dnode().

  • Increase maximum prefetch distance for indirect blocks from 64

to 128MB. It should cover the maximum 1022 blocks of block cloning
access size in case of default 128KB recordsize used. In case of
bigger recordsize the above prescient prefetch should also help.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored by: iXsystems, Inc.
Closes #16814

Details

Provenance
mavAuthored on Dec 4 2024, 11:19 PM
GitHub <noreply@github.com>Committed on Dec 4 2024, 11:19 PM
Parents
rGc33a55b0c201: Allow dsl_deadlist_open() return errors
Branches
Unknown
Tags
Unknown