PMThreads: persistent memory threads harnessing versioned shadow copies

Autor: Andy Nisbet, Mikel Luján, Wenzhe Zhang, Zhenwei Wu, Kai Lu
Přispěvatelé: Donaldson, Alastair F., Torlak, Emina
Rok vydání: 2020
Předmět:
Zdroj: PLDI
Wu, Z, Lu, K, Nisbet, A, Zhang, W & Luján, M 2020, PMThreads: Persistent Memory Threads Harnessing Versioned Shadow Copies . in A F Donaldson & E Torlak (eds), Proceedings of the 41st ACM SIGPLAN International Conference on Programming Language Design and Implementation (PLDI ’20) . Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), Association for Computing Machinery, pp. 623-637 . https://doi.org/10.1145/3385412.3386000
Popis: Byte-addressable non-volatile memory (NVM) makes it possible to perform fast in-memory accesses to persistent data using standard load/store processor instructions. Some approaches for NVM are based on durable memory transactions and provide a persistent programming paradigm. However, they cannot be applied to existing multi-threaded applications without extensive source code modifications. Durable transactions typically rely on logging to enforce failure-atomic commits that include additional writes to NVM and considerable ordering overheads.This paper presents PMThreads, a novel user-space runtime that provides transparent failure-atomicity for lock-based parallel programs. A shadow DRAM page is used to buffer application writes for efficient propagation to a dual-copy NVM persistent storage framework during a global quiescent state. In this state, the working NVM copy and the crash-consistent copy of each page are atomically updated, and their roles are switched. A global quiescent state is entered at timed intervals by intercepting pthread lock acquire and release operations to ensure that no thread holds a lock to persistent data.Running on a dual-socket system with 20 cores, we show that PMThreads substantially outperforms the state-of-the-art Atlas, Mnemosyne and NVthreads systems for lock-based benchmarks (Phoenix, PARSEC benchmarks, and microbenchmark stress tests). Using Memcached, we also investigate the scalability of PMThreads and the effect of different time intervals for the quiescent state.
Databáze: OpenAIRE