Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

reduce taskq and context-switch cost of zio pipe #7736

Merged
merged 1 commit into from
Aug 2, 2018

Commits on Jul 23, 2018

  1. reduce taskq and context-switch cost of zio pipe

    When doing a read from disk, ZFS creates 3 ZIO's: a zio_null(), the
    logical zio_read(), and then a physical zio. Currently, each of these
    results in a separate taskq_dispatch(zio_execute).
    
    On high-read-iops workloads, this causes a significant performance
    impact. By processing all 3 ZIO's in a single taskq entry, we reduce the
    overhead on taskq locking and context switching.  We accomplish this by
    allowing zio_done() to return a "next zio to execute" to zio_execute().
    
    This results in a ~12% performance increase for random reads, from
    96,000 iops to 108,000 iops (with recordsize=8k, on SSD's).
    
    External-issue: DLPX-59292
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    ahrens committed Jul 23, 2018
    Configuration menu
    Copy the full SHA
    c24e3fe View commit details
    Browse the repository at this point in the history