Feature #6322
closedZFS indirect block predictive prefetch
100%
Description
For quite some time I was thinking about possibility to prefetch ZFS indirection tables while doing sequential reads or writes. Recent changes in predictive prefetcher made that much easier to do. My tests on zvol with 16KB block size on 5x striped and 2x mirrored pool of 10 disks show almost double throughput on sequential read, and almost tripple on sequential rewrite. While for read alike effect can be received from increasing maximal prefetch distance (though at higher memory cost), for rewrite there is no other solution so far.
Updated by Alexander Motin almost 7 years ago
The patch is available for review at: https://reviews.csiden.org/r/259/
Updated by Alexander Motin almost 7 years ago
While working on this patch I've found and addressed couple minor issues created by previous prefetcher changes:
- indirection tables prefetches were not counted as prefetches in statistics;
- prefetch was done always, even if caching for dataset was completely disabled.
Updated by Alexander Motin over 6 years ago
Testing on FreeBSD with zvol on top of 6x striped 2x mirrored pool of 12 assorted HDDs shown me such performance numbers:
------- BEFORE --------
Write 491363677 bytes/sec
Read 312430631 bytes/sec
Rewrite 97680464 bytes/sec
-------- AFTER --------
Write 493524146 bytes/sec
Read 438598079 bytes/sec
Rewrite 277506044 bytes/sec
Updated by Matthew Ahrens over 6 years ago
- Subject changed from ZFS indirection tables prefetch to ZFS indirect block predictive prefetch
Updated by Electric Monk over 6 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
git commit cb92f4130ce5b2c4ae1fa5fa6c776f4d4dc28ad9
commit cb92f4130ce5b2c4ae1fa5fa6c776f4d4dc28ad9 Author: Alexander Motin <mav@FreeBSD.org> Date: 2016-04-11T20:44:52.000Z 6322 ZFS indirect block predictive prefetch Reviewed by: Matthew Ahrens <mahrens@delphix.com> Reviewed by: Paul Dagnelie <pcd@delphix.com> Approved by: Robert Mustacchi <rm@joyent.com>