Memento: a framework for detectable recoverability in persistent memory
File(s) 3591232.pdf (731.4 KB)
Published version
Author(s)
Cho, Kyeongmin
Jeon, Seungmin
Raad, Azalea
Kang, Jeehoon
Type
Journal Article
Abstract
Persistent memory (PM) is an emerging class of storage technology that combines the performance of DRAM with the durability of SSD, offering the best of both worlds. This had led to a surge of research on persistent objects in PM. Among such persistent objects, concurrent data structures (DSs) are particularly interesting thanks to their performance and scalability. One of the most widely used correctness criteria for persistent concurrent DSs is detectable recoverability, ensuring both thread safety (for correctness in non-crashing concurrent executions) and crash consistency (for correctness in crashing executions). However, the existing approaches to designing detectably recoverable concurrent DSs are either limited to simple algorithms or suffer from high runtime overheads.
We present Memento: a general and high-performance programming framework for detectably recoverable concurrent DSs in PM. To ensure general applicability to various DSs, Memento supports primitive operations such as checkpoint and compare-and-swap and their composition with control constructs. To ensure high performance, Memento employs a timestamp-based recovery strategy that requires fewer writes and flushes to PM than the existing approaches. We formally prove that Memento ensures detectable recoverability in the presence of crashes. To showcase Memento, we implement a lock-free stack, list, queue, and hash table, and a combining queue that detectably recovers from random crashes in stress tests and performs comparably to existing hand-tuned persistent DSs with and without detectable recoverability.
We present Memento: a general and high-performance programming framework for detectably recoverable concurrent DSs in PM. To ensure general applicability to various DSs, Memento supports primitive operations such as checkpoint and compare-and-swap and their composition with control constructs. To ensure high performance, Memento employs a timestamp-based recovery strategy that requires fewer writes and flushes to PM than the existing approaches. We formally prove that Memento ensures detectable recoverability in the presence of crashes. To showcase Memento, we implement a lock-free stack, list, queue, and hash table, and a combining queue that detectably recovers from random crashes in stress tests and performs comparably to existing hand-tuned persistent DSs with and without detectable recoverability.
Date Issued
2023-06-06
Date Acceptance
2023-06-01
Citation
Proceedings of the ACM on Programming Languages, 2023, 7 (PLDI), pp.292-317
ISSN
2475-1421
Publisher
Association for Computing Machinery (ACM)
Start Page
292
End Page
317
Journal / Book Title
Proceedings of the ACM on Programming Languages
Volume
7
Issue
PLDI
Copyright Statement
© 2023 Copyright held by the owner/author(s) This work is licensed under a Creative Commons Attribution 4.0 International License.
License URL
Publication Status
Published
Article Number
118
Date Publish Online
2023-06-06
