Concurrency on Persistent Memory: Challenges and our Solution to Design Thread-safe Data Structures for Persistent Memory

Library Content Type:
Publish Date: 
Thursday, September 27, 2018
Event Name: 
Focus Areas:

Persistent memory brings new opportunities to applications. However, it introduces additional challenges to support data consistency in the wake of crash or power failure. There are libraries (like PMDK) that expose persistent memory to applications with a set of abstractions like persistent pointers, persistent allocators, and persistent memory pools. However, application developers prefer thinking in terms of data structures and algorithms.

This presentation demonstrates challenges of multi-threading programming for persistent memory. We compare versioning and write-ahead logging (WAL) approaches to design thread-safe associative containers. Our results show performance advantages of the versioning approach against the WAL. Furthermore, we find the versioning approach more suitable to build thread-safe data structures for persistent memory. At the end, we will demonstrate how our data structures used in PMEMKV (a key-value data store for persistent memory) and will compare performance results of PMEMKV with RocksDB.

Learning Objectives:
1. Challenges of multi-threading programming for persistent memory
2. Versioning vs. write-ahead logging approaches to support data consistency in data structures for persistent memory
3. Performance comparison of PMEMKV vs RocksDB on persistent memory

Watch video: