fat zap should prefetch when iterating
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.
Updated by Electric Monk over 3 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
commit 52abb70e073c2a88808c0d66fd810ba8c5080572 Author: Matthew Ahrens <firstname.lastname@example.org> Date: 2019-02-25T22:00:05.000Z 9691 fat zap should prefetch when iterating Reviewed by: Serapheim Dimitropoulos <email@example.com> Reviewed by: Pavel Zakharov <firstname.lastname@example.org> Reviewed by: George Wilson <email@example.com> Approved by: Robert Mustacchi <firstname.lastname@example.org>