Suyash Mahar, Mingyao Shen, Terence Kelly, Steven Swanson
{"title":"快照:快速,用户空间崩溃一致性的CXL和PM使用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":"{\"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}","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}
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 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.