FliT: A Library for Simple and Efficient Persistent Algorithms

08/09/2021
by   Yuanhao Wei, et al.
0

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. The FliT library 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.1× over a naive implementation in all but one workload.

READ FULL TEXT
research
05/29/2019

Don't Persist All : Efficient Persistent Data Structures

Data structures used in software development have inbuilt redundancy to ...
research
07/07/2021

Persistent Software Combining

We study the performance power of software combining in designing persis...
research
08/21/2019

MOD: Minimally Ordered Durable Datastructures for Persistent Memory

Persistent Memory (PM) makes possible recoverable applications that can ...
research
02/02/2019

Fine-Grain Checkpointing with In-Cache-Line Logging

Non-Volatile Memory offers the possibility of implementing high-performa...
research
05/20/2021

Fast Nonblocking Persistence for Concurrent Data Structures

We present a fully lock-free variant of the recent Montage system for pe...
research
12/23/2020

Flat-Combining-Based Persistent Data Structures for Non-Volatile Memory

Flat combining (FC) is a synchronization paradigm in which a single thre...
research
09/04/2019

Correct, Fast Remote Persistence

Persistence of updates to remote byte-addressable persistent memory (PM)...

Please sign up or login with your details

Forgot password? Click here to reset