A Flat-Combining-Based Persistent Stack for Non-Volatile Memory
Preprint
Abstract
Flat combining (FC) is a synchronization paradigm in which a single thread, holding a global lock, collects requests by multiple threads for accessing a concurrent data structure and applies their combined requests to it. Although FC is sequential, it significantly reduces synchronization overheads and cache invalidations and thus often provides better performance than that of lock-free implementations. The recent emergence of non-volatile memory (NVM) technologies increases the interest in the development of persistent concurrent objects. These are objects that are able to recover from system failures and ensure consistency by retaining their state in NVM and fixing it, if required, upon recovery. Of particular interest are detectable objects that, in addition to ensuring consistency, allow recovery code to infer if a failed operation took effect before the crash and, if it did, obtain its response. In this work, we present the first FC-based persistent object implementations. Specifically, we introduce a detectable FC-based implementation of a concurrent LIFO stack, a concurrent FIFO queue, and a double-ended queue. Our empirical evaluation establishes that due to flat combining, the novel implementations require a much smaller number of costly persistence instructions than competing algorithms and are therefore able to significantly outperform them.Keywords
All Related Versions
This publication has 14 references indexed in Scilit:
- Delay-Free Concurrency on Faulty Persistent Memory2019
- OneFile: A Wait-Free Persistent Transactional Memory2019
- The Inherent Cost of Remembering Consistently2018
- Makalu: fast recoverable allocation of non-volatile memoryACM SIGPLAN Notices, 2016
- Linearizability of Persistent Memory Objects Under a Full-System-Crash Failure Model2016
- Flat combining and the synchronization-parallelism tradeoff2010
- A scalable lock-free stack algorithmJournal of Parallel and Distributed Computing, 2010
- The Baskets Queue2008
- Skiplist-based concurrent priority queues2002
- Distributing Hot-Spot Addressing in Large-Scale MultiprocessorsIEEE Transactions on Computers, 1987