FliT: a library for simple and efficient persistent algorithms

FliT: a library for simple and efficient persistent algorithms
复制标题

FliT:一个简单高效的持久算法库

DOI:
10.1145/3503221.3508436
复制
发表时间:
2022
期刊:
Proceedings of the 27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
影响因子:
--
通讯作者:
Petrank, Erez
Petrank, Erez
中科院分区:
--
文献类型:
--
作者:
Wei, Yuanhao;Ben-David, Naama;Friedman, Michal;Blelloch, Guy E.;Petrank, Erez

文献摘要

参考文献

被引文献

相似文献

非易失性随机存取存储器(NVRAM)提供字节可寻址的持久性,其速度与DRAM相当。然而,由于高速缓存保持易失性,自动高速缓存驱逐可以重新排序对存储器的更新,在系统崩溃时可能使持久存储器处于不一致的状态。刷新和围栏指令可以用来强制更新之间的排序,但代价很高。这激发了重要的工作,研究如何编写正确和有效的持久程序的NVRAM。在本文中,我们提出了FliT,一个C++库,有利于编写高效的持久代码。使用库的默认模式可以使任何可线性化的数据结构持久化,并且对代码的更改最小。FliT通过使用一种新的算法来跟踪脏缓存行,从而避免了许多冗余的刷新指令。为了描述FliT库的功能和保证,我们定义了一个持久化编程接口,称为P-V接口,FliT实现了该接口。P-V接口捕获代码的预期行为,其中某些指令的效果被持久化,而另一些则没有。我们表明,该接口捕捉到所需的语义的许多实用算法在literary.We应用的FliT库四个不同的持久化数据结构,并表明,在几个工作负载,持久化实现,和数据结构的大小,FliT库总是提高操作吞吐量,至少2.1倍以上的一个天真的实现,但在所有的工作负载。
Non-volatile random access memory (NVRAM) offers byte-addressable persistence at speeds comparable to DRAM. However, with caches remaining volatile, automatic cache evictions can reorder updates to memory, potentially leaving persistent memory in an inconsistent state upon a system crash. Flush and fence instructions can be used to force ordering among updates, but are expensive. This has motivated significant work studying how to write correct and efficient persistent programs for NVRAM.In this paper, we present FliT, a C++ library that facilitates writing efficient persistent code. Using the library's default mode makes any linearizable data structure durable with minimal changes to the code. FliT avoids many redundant flush instructions by using a novel algorithm to track dirty cache lines. It also allows for extra optimizations, but achieves good performance even in its default setting.To describe the FliT library's capabilities and guarantees, we define a persistent programming interface, called the P-V Interface, which FliT implements. The P-V Interface captures the expected behavior of code in which some instructions' effects are persisted and some are not. We show that the interface captures the desired semantics of many practical algorithms in the literature.We apply the FliT library to four different persistent data structures, and show that across several workloads, persistence implementations, and data structure sizes, the FliT library always improves operation throughput, by at least 2.1X over a naive implementation in all but one workload.
高效的多字比较和交换
DOI: 10.4230/lipics.disc.2020.4
发表时间: 2020
期刊: Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
影响因子: --
作者:
R. Guerraoui;Alex Kogan;Virendra J. Marathe;I. Zablotchi
通讯作者: I. Zablotchi
DOI: 10.1145/3210377.3210392
发表时间: 2018
期刊: Proceedings of the 30th on Symposium on Parallelism in Algorithms and Architectures
影响因子: --
作者:
Andreia Correia;P. Felber;P. Ramalhete
通讯作者: P. Ramalhete
嵌套安全的可恢复线性度:非易失性存储器的模块化结构
DOI: 10.1145/3212734.3212753
发表时间: 2018
期刊: Proceedings of the 2018 ACM Symposium on Principles of Distributed Computing
影响因子: --
作者:
H. Attiya;Ohad Ben;Danny Hendler
通讯作者: Danny Hendler
DOI: 10.1109/hipc50609.2020.00042
发表时间: 2020
期刊: and Analytics (HiPC
影响因子: --
作者:
Beadle, H. Alan;Cai, Wentao;Wen, Haosen;Scott, Michael L.
通讯作者: Scott, Michael L.