Project

General

Profile

Feature #6322

ZFS indirect block predictive prefetch

Added by Alexander Motin almost 4 years ago. Updated over 3 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Category:
-
Start date:
2015-10-12
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage

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.

History

#1

Updated by Alexander Motin almost 4 years ago

The patch is available for review at: https://reviews.csiden.org/r/259/

#2

Updated by Alexander Motin almost 4 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.

#3

Updated by Alexander Motin over 3 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

#4

Updated by Matthew Ahrens over 3 years ago

  • Subject changed from ZFS indirection tables prefetch to ZFS indirect block predictive prefetch
#5

Updated by Electric Monk over 3 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>

Also available in: Atom PDF