Reviewed by: Serapheim Dimitropoulos <[email protected]>
Reviewed by: Pavel Zakharov <[email protected]>
Reviewed by: George Wilson <[email protected]>

When iterating over a ZAP object, we're almost always certain to iterate over 
the entire object.
If there are multiple leaf blocks, we can realize a performance win by issuing 
reads for all the
leaf blocks in parallel when the iteration begins.

For example, if we have 10,000 snapshots, "zfs destroy -nv pool/fs@1%9999" can 
take 30 minutes
when the cache is cold. This change provides a >3x performance improvement, by 
issuing the reads
for all ~64 blocks of each ZAP object in parallel.

Upstream bug: DLPX-58347
You can view, comment on, or merge this pull request online at:

  https://github.com/openzfs/openzfs/pull/682

-- Commit Summary --

  * 9691 fat zap should prefetch when iterating

-- File Changes --

    M usr/src/uts/common/fs/zfs/ddt_zap.c (14)
    M usr/src/uts/common/fs/zfs/dmu.c (12)
    M usr/src/uts/common/fs/zfs/sys/zap.h (5)
    M usr/src/uts/common/fs/zfs/zap.c (46)
    M usr/src/uts/common/fs/zfs/zap_micro.c (31)

-- Patch Links --

https://github.com/openzfs/openzfs/pull/682.patch
https://github.com/openzfs/openzfs/pull/682.diff

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/682

------------------------------------------
openzfs: openzfs-developer
Permalink: 
https://openzfs.topicbox.com/groups/developer/T0b84f3e5cf68a40f-M9a772a04c401af1d2e854b0e
Delivery options: https://openzfs.topicbox.com/groups/developer/subscription

Reply via email to