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
