Project

General

Profile

Bug #5694

traverse_prefetcher does not prefetch enough

Added by Matthew Ahrens over 4 years ago. Updated over 4 years ago.

Status:
Closed
Priority:
Normal
Category:
zfs - Zettabyte File System
Start date:
2015-03-08
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage

Description

It was observed that the default value of zfs_pd_blks_max is 100, and may be insufficient for zfs send performance when using smaller recordsize files. The default setting is insufficient to drive throughput higher than 30MBps (on a test system). Increasing the # blocks to 700 increased performance. Rough observation was as follows:

pd_blks_max Throughput( backup_cb() )
100 ~30MBps
200 40-50MBps
300 50-60MBps
400 60-70MBps
700 70-80MBps (spikes over 100MBps)

Having 100 blocks when we're prefetching 128k blocks allows the sending thread to not have to block doing reads. This amounts to about 12MB of prefetched data but when we're sending 8K blocks it's less than 1MB of cached data.

It would be better if we specified the prefetch logic in terms of bytes rather than blocks. The prefetching thread would just read that many bytes ahead of the sending thread.

History

#1

Updated by Electric Monk over 4 years ago

  • % Done changed from 0 to 100
  • Status changed from New to Closed

git commit 34d7ce052c4565b078f73b95ccbd49274e98edaa

commit  34d7ce052c4565b078f73b95ccbd49274e98edaa
Author: George Wilson <george.wilson@delphix.com>
Date:   2015-03-24T16:56:58.000Z

    5694 traverse_prefetcher does not prefetch enough
    Reviewed by: Matthew Ahrens <mahrens@delphix.com>
    Reviewed by: Alex Reece <alex@delphix.com>
    Reviewed by: Christopher Siden <christopher.siden@delphix.com>
    Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
    Reviewed by: Bayard Bell <buffer.g.overflow@gmail.com>
    Approved by: Garrett D'Amore <garrett@damore.org>

Also available in: Atom PDF