[论文解读] Brief Announcement: Building Fast Recoverable Persistent Data Structures with Montage
Montage 是一个通用系统,通过使用慢速计时的周期时钟和缓冲的持久线性化方法,构建快速、可恢复的持久数据结构。它通过仅持久化关键抽象状态(例如键值对)来最小化持久化开销,并在恢复时从临时 DRAM 重建具体结构(如哈希表和图),从而实现高达 2000 万 ops/s 的性能——接近 DRAM 性能的 3 倍,且比先前的系统(如 Dalí 和 Pronto)快 7 倍。
The recent emergence of fast, dense, nonvolatile main memory suggests that certain long-lived data might remain in its natural pointer-rich format across program runs and hardware reboots. Operations on such data must be instrumented with explicit write-back and fence instructions to ensure consistency in the wake of a crash. Techniques to minimize the cost of this instrumentation are an active topic of research. We present what we believe to be the first general-purpose approach to building buffered durably linearizable persistent data structures, and a system, Montage, to support that approach. Montage is built on top of the Ralloc nonblocking persistent allocator. It employs a slow-ticking epoch clock, and ensures that no operation appears to span an epoch boundary. It also arranges to persist only that data minimally required to reconstruct the structure after a crash. If a crash occurs in epoch $e$, all work performed in epochs $e$ and $e-1$ is lost, but work from prior epochs is preserved. We describe the implementation of Montage, argue its correctness, and report unprecedented throughput for persistent queues, sets/mappings, and general graphs.
研究动机与目标
- 解决在非易失性内存(NVM)环境下,确保持久线性化所导致的高性能开销问题。
- 通过将持久化与关键路径执行解耦,减少正常操作期间显式写回和屏障指令的开销。
- 通过仅持久化最小且必要的抽象状态,实现快速恢复,从而允许从临时内存重建具体数据结构。
- 支持通用、无锁和非阻塞的持久数据结构,确保在崩溃后仍保持正确性。
- 在保证崩溃一致性与持久性的同时,实现接近临时 DRAM 数据结构的性能。
提出的方法
- 使用慢速计时的周期时钟,确保任一操作不会跨越周期边界,从而实现崩溃后的安全恢复。
- 将抽象状态(持久化在 NVM 中)与具体状态(维护在临时 DRAM 中)分离,仅持久化前者。
- 以 Ralloc 无锁持久化分配器为基础,消除分配/释放操作中的写回和屏障开销。
- 在恢复期间,使用用户提供的逻辑从抽象状态重建具体数据结构(如哈希表、图)。
- 通过将顶点和边的重建分配给多个线程,实现可扩展、并行化的恢复,最大限度减少锁的使用。
- 通过协调操作间的持久化,确保持久化效果的顺序与线性化顺序一致,从而实现持久线性化。
实验结果
研究问题
- RQ1通用系统是否能在不牺牲崩溃一致性的情况下,降低持久线性化在持久数据结构中的性能开销?
- RQ2通过缓冲持久化并推迟写回,持久数据结构在多大程度上可以实现接近 DRAM 的性能?
- RQ3将抽象状态与具体状态分离,在最小化持久存储写入次数和提升恢复效率方面有多有效?
- RQ4基于 Ralloc 等无锁分配器构建的系统,是否能在保持无锁语义的同时实现快速、可扩展的恢复?
- RQ5在真实工作负载下,Montage 的性能与现有通用及专用持久数据结构相比如何?
主要发现
- Montage 在读密集型工作负载下持续实现了超过 2000 万次操作/秒的性能,吞吐量是 Dalí 的 7 倍,Pronto 的 17 倍。
- Montage 在哈希表上的性能仅比原生 DRAM 哈希表低 3 倍,已接近 Intel Optane NVM 上理论最佳性能。
- 使用单个恢复线程时,1 GB 数据集的恢复仅耗时 0.7 秒;使用 8 个线程时,32 GB 数据集的恢复耗时 13.8 秒,表现出高效的可扩展性。
- 对于大规模 Orkut 社交网络图(300 万个顶点,1.17 亿条边),在低线程数下 Montage 的恢复速度超过 DRAM 重建,高线程数下性能相当。
- Montage 的性能优于或匹配了现有的专用持久数据结构,包括针对函数式更新或日志重放优化的结构。
- 该系统支持在具有独立故障模式的不受信任应用程序之间安全共享持久数据结构,表明其是 NVM 时代文件持久化的一种可行替代方案。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。