Crash Consistency for Parallel Persistent Memory Programs
Kato, Yasunari, Computer Science - School of Engineering and Applied Science, University of Virginia
Khan, Samira, EN-Comp Science Dept, University of Virginia
Persistent Memory (PM) delivers high performance and preserves persistent data across crashes and power failures. One major advantage of PM over conventional storage devices (e.g., SSD and HDD) is the fine-grained, direct management of persistent data without relying on file systems. Though performant, such management requires the program to preserve the state of persistent data and recover after failures in order for the program to resume execution. PM versions of existing programs, including databases and key-value stores, guarantee data crash consistency. Programming libraries also ensure PM object crash consistency for single and multithreaded workloads. However, the ability for users to define multi-object crash consistency across multithreaded programs has been overlooked. In particular, when multiple threads that collaboratively modify persistent data, objects that belong to the same transaction need to be recoverable to a consistent state (e.g., the same previous version) in event of a failure. Existing library and programming support may enable this consistent recovery but requires highly customized implementation to coordinate the progress among threads, which can be error-prone with high-overhead.
In this paper, we propose an easy-to-use and efficient library for programmers to define crash consistency across multiple persistent objects on PM. The key idea is to group correlated persistent objects that need to be under the same version upon recover, and detect and fix consistency issues during recovery to preserve the same version. We develop PUnMix, a C++ library to enforce this persistent grouped crash consistency by performing “Persistent memory UnMix ing” of objects to a data consistent state. We apply PUnMix to persistent data structures, as well as database and scientific computing workloads. We evaluate PUnMix on the commercially available Intel Optane PM, and demonstrate that it achieves a throughput improvement of 1.87× over an implementation based on the industry-standard PMDK library from Intel.
MS (Master of Science)
Non-volatile memory, Software libraries and repositories, Persistent Memory, Multithreading, Crash Consistency