Skip to main navigation Skip to search Skip to main content

FliT: A Library for Simple and Efficient Persistent Algorithms

  • Yuanhao Wei
  • , Naama Ben-David
  • , Michal Friedman
  • , Guy E. Blelloch
  • , Erez Petrank

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

Abstract

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.

Original languageEnglish
Title of host publicationPPoPP 2022 - Proceedings of the 27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
Pages309-321
Number of pages13
ISBN (Electronic)9781450392044
DOIs
StatePublished - 28 Mar 2022
Externally publishedYes
Event27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP 2022 - Virtual, Online, Korea, Republic of
Duration: 2 Apr 20226 Apr 2022

Publication series

NameProceedings of the ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPOPP

Conference

Conference27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP 2022
Country/TerritoryKorea, Republic of
CityVirtual, Online
Period2/04/226/04/22

Keywords

  • concurrent data structures
  • non-volatile memory
  • recoverability

ASJC Scopus subject areas

  • Software

Fingerprint

Dive into the research topics of 'FliT: A Library for Simple and Efficient Persistent Algorithms'. Together they form a unique fingerprint.

Cite this