Skip to content

Eliminate ARC's distinction between data and metadata for eviction #13950

@adamdmoss

Description

@adamdmoss

Describe the feature would like to see added to OpenZFS

The ARC should treat data and metadata equally (at least for the purposes of eviction)

How will this feature improve OpenZFS?

I believe it should simplify the ARC and help to eliminate issues such as #10508 . The eviction code, for example, quite imperfectly jumps through hoops to keep the eviction balance between ARC_BUFC_DATA and ARC_BUFC_METADATA arc lists 'fair' in a slightly doomed manner which I believe would just 'come out in the wash' if they were not distinct in the first place.

Additional context

I seem to recall some Illumos engineers saying their version of ZFS does this and it turned out to be a good win. [citation needed]
That anecdote is the strongest argument I have, to be honest, though having spent a lot of time in the ARC code it's a tempting direction if only for the sake of simplicity.

I imagine there was (or seemed like) a good reason to treat data and metadata separately in the first place though; not sure if that theory has been proven-out.

Downsides:

  • There may be devil in the details to keep supporting primarycache=metadata.
  • Code churn
  • OpenZFS's test harness more or less exercises ARC robustness but I don't think we have anything (automated or otherwise) to prove that an ARC change is a perf win/loss, short of throwing it out to the world and letting people try it via a potentially very long release/feedback/response loop... but that's a bigger issue.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions