Mangosteen: Fast Transparent Durability for Linearizable Applications using NVM
summary
Mangosteen converts a linearizable in-memory app to durably linearizable NVM-backed code using six callback hooks, runtime binary instrumentation for write-only requests, and a redo log stored in a persistent ring buffer. Concurrency uses flat-combining per core so reads run concurrently while a combiner produces compressed write streams over 32-byte regions with intra-batch deduplication, then persists batches with only two fences per batch. Evaluation shows 2×–5× Redis throughput improvements and graceful degradation at high update ratios.
AI-written summary · about
chapters (9)
- 0:00Mangosteen motivation
- 3:13Prior fail-atomicity limits
- 6:48Design goals overview
- 8:12Architecture & concurrency
- 15:47Co-designed durability & concurrency
- 16:07Evaluation setup
- 17:17Performance vs Redis & Parimonn
- 19:26Duplication effectiveness
- 20:30Conclusion and key takeaways
related talks
35mDeveloping Software for Persistent Memory
50mImmutable Values in the Big Wide World
21mMatrixKV: Reducing Write Stalls and Write Amplification in LSM-tree Based KV Stores
19mPangolin: A Fault-Tolerant Persistent Memory Programming Library
15mTIPS: Making Volatile Index Structures Persistent with DRAM-NVMM Tiering
43mPromise and Pitfalls of Persistent Memory
19mMemento: A Framework for Detectable Recoverability in Persistent Memory
15mImproving Performance of Flash Based Key-Value Stores Using Storage Class Memory...
