Suyash Mahar, Mingyao Shen, Terence Kelly, Steven Swanson
{"title":"Snapshot: Fast, Userspace Crash Consistency for CXL and PM Using msync","authors":"Suyash Mahar, Mingyao Shen, Terence Kelly, Steven Swanson","doi":"arxiv-2310.16300","DOIUrl":null,"url":null,"abstract":"Crash consistency using persistent memory programming libraries requires\nprogrammers to use complex transactions and manual annotations. In contrast,\nthe failure-atomic msync() (FAMS) interface is much simpler as it transparently\ntracks updates and guarantees that modified data is atomically durable on a\ncall to the failure-atomic variant of msync(). However, FAMS suffers from\nseveral drawbacks, like the overhead of msync() and the write amplification\nfrom page-level dirty data tracking. To address these drawbacks while preserving the advantages of FAMS, we\npropose Snapshot, an efficient userspace implementation of FAMS. Snapshot uses compiler-based annotation to transparently track updates in\nuserspace and syncs them with the backing byte-addressable storage copy on a\ncall to msync(). By keeping a copy of application data in DRAM, Snapshot\nimproves access latency. Moreover, with automatic tracking and syncing changes\nonly on a call to msync(), Snapshot provides crash-consistency guarantees,\nunlike the POSIX msync() system call. For a KV-Store backed by Intel Optane running the YCSB benchmark, Snapshot\nachieves at least 1.2$\\times$ speedup over PMDK while significantly\noutperforming conventional (non-crash-consistent) msync(). On an emulated CXL\nmemory semantic SSD, Snapshot outperforms PMDK by up to 10.9$\\times$ on all but\none YCSB workload, where PMDK is 1.2$\\times$ faster than Snapshot. Further,\nKyoto Cabinet commits perform up to 8.0$\\times$ faster with Snapshot than its\nbuilt-in, msync()-based crash-consistency mechanism.","PeriodicalId":501333,"journal":{"name":"arXiv - CS - Operating Systems","volume":"322 ","pages":""},"PeriodicalIF":0.0000,"publicationDate":"2023-10-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"arXiv - CS - Operating Systems","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/arxiv-2310.16300","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0
Abstract
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.