论文标题
蒙太奇:一种通用系统,用于缓冲可持久的可线数据结构
Montage: A General System for Buffered Durably Linearizable Data Structures
论文作者
论文摘要
最近的快速,密集,非易失性主内存的出现表明,某些长寿命数据可能会在程序运行和硬件重新启动的自然指针格式中保留。对此类数据的操作必须用明确的写下和围栏说明来仪器,以确保崩溃后的一致性。最小化该仪器成本的技术是一个积极的研究主题。 我们介绍了我们认为是构建可缓冲的可持久可线化持久数据结构的第一种通用方法,以及一个系统,蒙太奇,以支持该方法。蒙太奇建在Ralloc非阻止持续分配器的顶部。它采用缓慢的时钟,并确保没有操作似乎跨越了时期边界。它还安排仅坚持崩溃后重建结构的最低要求的数据。如果在Epoch $ e $中发生崩溃,则所有在Epochs $ e $中执行的工作丢失了,但保留了先前时期的工作。 我们描述了蒙太奇的实现,争论其正确性,并报告了持续队列,集合/映射和一般图的前所未有的吞吐量。
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.