FliT: A Library for Simple and Efficient Persistent Algorithms

被引:9
|
作者
Wei, Yuanhao [1 ]
Ben-David, Naama [2 ]
Friedman, Michal [3 ]
Blelloch, Guy E. [1 ]
Petrank, Erez [3 ]
机构
[1] Carnegie Mellon Univ, Pittsburgh, PA USA
[2] VMware Res, Palo Alto, CA USA
[3] Techn, Haifa, Israel
基金
以色列科学基金会; 美国国家科学基金会;
关键词
Non-volatile Memory; Concurrent Data Structures; Recoverability;
D O I
10.1145/3503221.3508436
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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.
引用
收藏
页码:309 / 321
页数:13
相关论文
共 50 条
  • [1] Simple and efficient algorithms for Octagons
    1600, Springer Verlag (8858):
  • [2] Romulus: Efficient Algorithms for Persistent Transactional Memory
    Correia, Andreia
    Felber, Pascal
    Ramalhete, Pedro
    SPAA'18: PROCEEDINGS OF THE 30TH ACM SYMPOSIUM ON PARALLELISM IN ALGORITHMS AND ARCHITECTURES, 2018, : 271 - 282
  • [3] LEAC: An efficient library for clustering with evolutionary algorithms
    Robles-Berumen, Hermes
    Zafra, Amelia
    Fardoun, Habib M.
    Ventura, Sebastian
    KNOWLEDGE-BASED SYSTEMS, 2019, 179 : 117 - 119
  • [4] Efficient algorithms for isomorphisms of simple types
    Gili, J
    Zibin, Y
    MATHEMATICAL STRUCTURES IN COMPUTER SCIENCE, 2005, 15 (05) : 917 - 957
  • [5] Efficient algorithms for isomorphisms of simple types
    Zibin, Y
    Gil, JY
    Considine, J
    ACM SIGPLAN NOTICES, 2003, 38 (01) : 160 - 171
  • [6] A SIMPLE, EFFICIENT METHOD TO CREATE A CDNA LIBRARY
    HU, WN
    KOPACHIK, W
    BAND, RN
    BIOTECHNIQUES, 1992, 13 (06) : 862 - 864
  • [7] LEDA - A LIBRARY OF EFFICIENT DATA-TYPES AND ALGORITHMS
    MEHLHORN, K
    NAHER, S
    LECTURE NOTES IN COMPUTER SCIENCE, 1989, 379 : 88 - 106
  • [8] LEDA - A LIBRARY OF EFFICIENT DATA-TYPES AND ALGORITHMS
    NAHER, S
    MEHLHORN, K
    LECTURE NOTES IN COMPUTER SCIENCE, 1990, 443 : 1 - 5
  • [9] Simple and Efficient Acceleration of Existing Multigrid Algorithms
    Citro, Vincenzo
    AIAA JOURNAL, 2019, 57 (06) : 2244 - 2247
  • [10] Efficient algorithms for a simple network design problem
    Nakano, Shin-ichi
    Uehara, Ryuhei
    Uno, Takeaki
    NETWORKS, 2013, 62 (02) : 95 - 104