Snapshot:基于 msync 的 CXL 与 PM 快速用户态崩溃一致性
分布式、并行与集群计算
2023-10-26 v1 操作系统
摘要
使用持久内存编程库的崩溃一致性要求程序员使用复杂事务与手动标注。相比之下,失效原子 msync()(FAMS)接口更为简单,因其透明地追踪更新并保证在调用失效原子变体的 msync() 时修改数据原子性地持久化。然而,FAMS 存在若干缺陷,如 msync() 的开销以及页级脏数据追踪带来的写放大。为在保留 FAMS 优势的同时解决这些缺陷,我们提出了 Snapshot,一种高效的 FAMS 用户态实现。Snapshot 使用基于编译器的标注在用户态透明追踪更新,并在调用 msync() 时与后备的字节寻址存储副本同步。通过在 DRAM 中保留应用数据副本,Snapshot 改善了访问延迟。此外,借助自动追踪且仅在调用 msync() 时同步变更,Snapshot 提供了崩溃一致性保证,而 POSIX msync() 系统调用则无此能力。对于由 Intel Optane 支撑并运行 YCSB 基准的 KV-Store,Snapshot 相较 PMDK 至少实现 1.2 加速,同时显著优于常规(非崩溃一致)msync()。在模拟的 CXL 内存语义 SSD 上,除一种 YCSB 工作负载(PMDK 比 Snapshot 快 1.2)外,Snapshot 在其余所有负载上相较 PMDK 最高达 10.9 加速。此外,Kyoto Cabinet 的提交在 Snapshot 下比其内置的、基于 msync() 的崩溃一致性机制最高快 8.0。
引用
@article{arxiv.2310.16300,
title = {Snapshot: Fast, Userspace Crash Consistency for CXL and PM Using msync},
author = {Suyash Mahar and Mingyao Shen and Terence Kelly and Steven Swanson},
journal= {arXiv preprint arXiv:2310.16300},
year = {2023}
}
备注
A shorter version of this paper appeared in the Proceedings of ICCD 2023