Abstract | ||
---|---|---|
Many social-media and IoT services have very large working sets consisting of billions of tiny (≈100 B) objects. Large, flash-based caches are important to serving these working sets at acceptable monetary cost. However, caching tiny objects on flash is challenging for two reasons: (i) SSDs can read/write data only in multi-KB “pages” that are much larger than a single object, stressing the limited number of times flash can be written; and (ii) very few bits per cached object can be kept in DRAM without losing flash’s cost advantage. Unfortunately, existing flash-cache designs fall short of addressing these challenges: write-optimized designs require too much DRAM, and DRAM-optimized designs require too many flash writes.We present Kangaroo, a new flash-cache design that optimizes both DRAM usage and flash writes to maximize cache performance while minimizing cost. Kangaroo combines a large, set-associative cache with a small, log-structured cache. The set-associative cache requires minimal DRAM, while the log-structured cache minimizes Kangaroo’s flash writes. Experiments using traces from Meta and Twitter show that Kangaroo achieves DRAM usage close to the best prior DRAM-optimized design, flash writes close to the best prior write-optimized design, and miss ratios better than both. Kangaroo’s design is Pareto-optimal across a range of allowed write rates, DRAM sizes, and flash sizes, reducing misses by 29% over the state of the art. These results are corroborated by analytical models presented herein and with a test deployment of Kangaroo in a production flash cache at Meta. |
Year | DOI | Venue |
---|---|---|
2022 | 10.1145/3542928 | ACM Transactions on Storage |
Keywords | DocType | Volume |
Flash, caching, tiny objects | Journal | 18 |
Issue | ISSN | Citations |
3 | 1553-3077 | 0 |
PageRank | References | Authors |
0.34 | 0 | 9 |
Name | Order | Citations | PageRank |
---|---|---|---|
Sara McAllister | 1 | 0 | 0.34 |
Benjamin Berg | 2 | 0 | 0.34 |
Julian Tutuncu-Macias | 3 | 0 | 0.34 |
Juncheng Yang | 4 | 0 | 0.34 |
Sathya Gunasekar | 5 | 0 | 0.34 |
Jimmy Lu | 6 | 0 | 0.34 |
Daniel Berger | 7 | 91 | 9.69 |
Nathan Beckmann | 8 | 352 | 19.46 |
Gregory R. Ganger | 9 | 4560 | 383.16 |