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...
Saved in:
Main Authors | , , , |
---|---|
Format | Journal Article |
Language | English |
Published |
24.10.2023
|
Subjects | |
Online Access | Get full text |
Cover
Loading…
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. |
---|---|
DOI: | 10.48550/arxiv.2310.16300 |