Snapshot: Fast, Userspace Crash Consistency for CXL and PM Using msync

Crash consistency using persistent memory programming libraries requires programmers to use complex transactions and manual annotations. In contrast, the failure-atomic msync() (FAMS) interface is much simpler as it transparently tracks updates and guarantees that modified data is atomically durable...

Full description

Saved in:
Bibliographic Details
Published inarXiv.org
Main Authors Mahar, Suyash, Shen, Mingyao, Kelly, Terence, Swanson, Steven
Format Paper
LanguageEnglish
Published Ithaca Cornell University Library, arXiv.org 25.10.2023
Subjects
Online AccessGet full text

Cover

Loading…
More Information
Summary:Crash consistency using persistent memory programming libraries requires programmers to use complex transactions and manual annotations. In contrast, the failure-atomic msync() (FAMS) interface is much simpler as it transparently tracks updates and guarantees that modified data is atomically durable on a call to the failure-atomic variant of msync(). However, FAMS suffers from several drawbacks, like the overhead of msync() and the write amplification from page-level dirty data tracking. To address these drawbacks while preserving the advantages of FAMS, we propose Snapshot, an efficient userspace implementation of FAMS. Snapshot uses compiler-based annotation to transparently track updates in userspace and syncs them with the backing byte-addressable storage copy on a call to msync(). By keeping a copy of application data in DRAM, Snapshot improves access latency. Moreover, with automatic tracking and syncing changes only on a call to msync(), Snapshot provides crash-consistency guarantees, unlike the POSIX msync() system call. For a KV-Store backed by Intel Optane running the YCSB benchmark, Snapshot achieves at least 1.2\(\times\) speedup over PMDK while significantly outperforming conventional (non-crash-consistent) msync(). On an emulated CXL memory semantic SSD, Snapshot outperforms PMDK by up to 10.9\(\times\) on all but one YCSB workload, where PMDK is 1.2\(\times\) faster than Snapshot. Further, Kyoto Cabinet commits perform up to 8.0\(\times\) faster with Snapshot than its built-in, msync()-based crash-consistency mechanism.
ISSN:2331-8422