Project

General

Profile

Bug #9337

zfs get all is slow due to uncached metadata

Added by Brad Lewis over 1 year ago. Updated over 1 year ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Category:
-
Start date:
2018-03-23
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage

Description

This project's goal is to make read-heavy channel programs and zfs(1m) administrative commands faster by caching all the metadata that they will need in the dbuf layer. This will prevent the data from being evicted, so that any future call to i.e. zfs get all won't have to go to disk (very much). There are two parts:

The dbuf_metadata_cache. We identify what to put into the cache based on the object type of each dbuf.
Caching objset properties os_{version,normalization,utf8only,casesensitivity} in the objset_t. The reason these needed to be cached is that although they are queried frequently, they aren't stored in a dbuf type which we can easily recognize and cache in the dbuf layer; instead, we have to explicitly store them. There's already existing infrastructure for maintaining cached properties in the objset setup code, so I simply used that.

History

#1

Updated by Electric Monk over 1 year ago

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

git commit adb52d9262f45a04318fc6e188fe2b7f59d989a5

commit  adb52d9262f45a04318fc6e188fe2b7f59d989a5
Author: Matthew Ahrens <mahrens@delphix.com>
Date:   2018-04-22T23:57:23.000Z

    9337 zfs get all is slow due to uncached metadata
    Reviewed by: Prakash Surya <prakash.surya@delphix.com>
    Reviewed by: George Wilson <george.wilson@delphix.com>
    Reviewed by: Thomas Caputi <tcaputi@datto.com>
    Approved by: Richard Lowe <richlowe@richlowe.net>

Also available in: Atom PDF