Slide 1

Slide 1 text

Papers We Love: ARC after dark CTO [email protected] Bryan Cantrill @bcantrill

Slide 2

Slide 2 text

Papers we love: ARC • Discussing ARC: A self-tuning, low overhead replacement cache by Nimrod Megiddo and Dharmendra Modha • Appeared in USENIX FAST ’03 • Has been broadly deployed in production — most notably in ZFS, in at least illumos (SmartOS, etc.) and FreeBSD • As much as possible, want to let the paper speak for itself — and provoke discussion!

Slide 3

Slide 3 text

ARC in the abstract

Slide 4

Slide 4 text

Introduction

Slide 5

Slide 5 text

Book of Genesis, 1:1

Slide 6

Slide 6 text

The Von Neumann architecture

Slide 7

Slide 7 text

“The Memory Organ”

Slide 8

Slide 8 text

“Entirely impractical”

Slide 9

Slide 9 text

The problem

Slide 10

Slide 10 text

Main themes

Slide 11

Slide 11 text

Related work: Optimal

Slide 12

Slide 12 text

Related work: Using recency with LRU

Slide 13

Slide 13 text

Related work: Using frequency with LFU

Slide 14

Slide 14 text

Related work: LRU-2

Slide 15

Slide 15 text

Related work: LRFU

Slide 16

Slide 16 text

Related work: ALRFU (AYFKM?!)

Slide 17

Slide 17 text

Related work: MQ

Slide 18

Slide 18 text

Related work: MQ, cont.

Slide 19

Slide 19 text

Related work: “Multiple experts”

Slide 20

Slide 20 text

Related work: Ghost caches

Slide 21

Slide 21 text

Generic cache replacement policy (?)

Slide 22

Slide 22 text

Fixed replacement cache

Slide 23

Slide 23 text

Adaptive replacement cache

Slide 24

Slide 24 text

Adaptive replacement cache

Slide 25

Slide 25 text

Adaptive replacement cache

Slide 26

Slide 26 text

Adaptive replacement cache

Slide 27

Slide 27 text

Adaptive replacement cache

Slide 28

Slide 28 text

Adaptive replacement cache

Slide 29

Slide 29 text

Adaptive replacement cache

Slide 30

Slide 30 text

ARC performance

Slide 31

Slide 31 text

ARC performance

Slide 32

Slide 32 text

ARC performance

Slide 33

Slide 33 text

ARC performance vs. LRU

Slide 34

Slide 34 text

ARC performance vs. FRC offline

Slide 35

Slide 35 text

ARC performance: “Empirically universal”

Slide 36

Slide 36 text

ARC performance: p over time

Slide 37

Slide 37 text

ARC: Conclusions

Slide 38

Slide 38 text

ARC: Endnotes

Slide 39

Slide 39 text

ARC: Endnotes

Slide 40

Slide 40 text

ARC: Epilogue • The ARC is the basis of the cache used by ZFS, with many enhancements over time: • Variable sized buffers — though now returning to be fixed blocks with ARC buffer data (ABD) • L2ARC to allow SSDs to be used as a cache • Separate metadata lists • Compressed ARC • A challenge has been to make all of ARC variable-sized…

Slide 41

Slide 41 text

Peril of a variably-sized ARC!