Blizzard: Adding True Persistence to Main Memory Data Structures
Persistent memory (PMEM) devices present an opportunity to retain the flexibility of main memory data structures and algorithms, but augment them with reliability and persistence. The challenge in doing this is to combine replication (for reliability) and failure atomicity (for persistence) with con...
Gespeichert in:
Hauptverfasser: | , , , , |
---|---|
Format: | Artikel |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext bestellen |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Zusammenfassung: | Persistent memory (PMEM) devices present an opportunity to retain the
flexibility of main memory data structures and algorithms, but augment them
with reliability and persistence. The challenge in doing this is to combine
replication (for reliability) and failure atomicity (for persistence) with
concurrency (for fully utilizing persistent memory bandwidth). These
requirements are at odds due to the sequential nature of replicating a log of
updates versus concurrent updates that are necessary for fully leveraging the
path from CPU to memory. We present Blizzard -- a fault-tolerant,
PMEM-optimized persistent programming runtime. Blizzard addresses the
fundamental tradeoff by combining (1) a coupled operations log that permits
tight integration of a PMEM-specialized user-level replication stack with a
PMEM-based persistence stack, and (2) explicit control over the commutativity
among concurrent operations. We demonstrate the generality and potential of
Blizzard with three illustrative applications with very different data
structure requirements for their persistent state. These use cases demonstrate
that with Blizzard, PMEM native data structures can deliver up to 3.6x
performance benefit over the alternative purpose-build persistent application
runtimes, while being simpler and safer (by providing failure atomicity and
replication). |
---|---|
DOI: | 10.48550/arxiv.2305.09034 |