The durability path of one store
Loads/stores hit PM directly, but data is only safe once it is flushed and fenced into the ADR domain.
XPLine write amplification
Optane moves 256 B internally, whatever you ask for.
Two research threads collide
Hover the nodes. Persistent-memory indexes on top, learned indexes below.
Insert key 38 into a gapped array
Choose a design, then drag the slider to crash after N persistent writes.
PM writes for one insert
Selected design highlighted.
Insert scaling with threads
Illustrative shape: Naive saturates PM write bandwidth.
Data node = hash table, model = hash function
Probe forward at most 16 slots (two 256 B XPLines). If all are full, spill to the stash. No record ever moves.
Model prediction vs placement
Dots above the line were displaced by probing. Bottom band is the stash.
Probe distance histogram
Clustered keys (FB-like) push mass to the right and into the stash.
Node sizing: small where change is frequent
Data nodes ≤ 256 KB keep split/expand cheap. Inner nodes up to 16 MB keep the tree shallow.
Hybrid logging around a structural modification (SMO)
Click a step or pick where the crash lands. Undo logging covers the slow retrain/copy; redo covers the cheap pointer swap.
Version-checked reads, out-of-place SMOs
Readers take no lock. They retry only when the version changed underneath them.
Recovery time (log scale)
Toggle what “recovered” means. Non-APEX values are illustrative.
Warm-up vs data size
Linear extrapolation of the reported points (illustrative).
Headline vs scoped claim
Same paper, two framings. Toggle to see where the abstract's “wins” gets an asterisk.
APEX throughput relative to a baseline
Bars above the dashed 1× line mean APEX is faster. Strip below: share of keys living in the stash.
Anchored to the episode: up to ~15× vs BzTree on inserts; FB inserts −5.77% vs LB+Tree and −42% vs DPTree. Remaining values are mock, for shape only.
PM writes per insert
Tested scale vs PM's pitch
Capacity axis, log scale.
What survives beyond Optane? What was borrowed?
Click a column header to sort. Hover a cell for the reasoning (editorial judgement, 0–1).
Key types tested
Every experiment used fixed 8-byte numeric keys; variable-length keys are footnote 2.
References
- APEX: A High-Performance Learned Index on Persistent Memory — Lu, Ding, Lo, Minhas, Wang, 2021
- The Case for Learned Index Structures — Kraska, Beutel, Chi, Dean, Polyzotis, 2018
- ALEX: An Updatable Adaptive Learned Index — Ding et al., 2020
- Let's Talk About Storage & Recovery Methods for NVM Database Systems — Arulraj, Pavlo, Dulloor, 2015
- An Empirical Guide to the Behavior and Use of Scalable Persistent Memory — Yang et al., 2020
- How Does Updatable Learned Index Perform on Non-Volatile Main Memory? — Chen, Chen, 2021
- Dash: Scalable Hashing on Persistent Memory — Lu, Hao, Wang, Lo, 2020
- FPTree: A Hybrid SCM-DRAM Persistent and Concurrent B-Tree — Oukid et al., 2016
- RECIPE: Converting Concurrent DRAM Indexes to PM Indexes — Lee et al., 2019