Abstract
Byte-addressable non-volatile memory, provided by novel technologies such as Intel Optane and CXL, has presented opportunities for developing high-performance concurrent objects (including concurrent data structures) with the added benefits of durability and recov-erability. However, developing such data structures while preserving high performance still remains challenging due to the latency and bandwidth gaps between volatile and non-volatile memory. In this paper, we investigate the construction of durably linearizable objects using our recently developed Mangosteen framework.
Mangosteen's frontend combines an efficient concurrency control mechanism based on flat-combining, and uses dynamic binary instrumentation to capture updates to the application state (with store instruction deduplication for further efficiency). This interfaces with an asynchronous persistency back-end that maintains a redo log and a non-volatile application state, to support recovery. Mangosteen is agnostic to the specifics of the underlying implementation and transforms any linearizable object (including a sequential object) into a durably linearizable counterpart supporting unlimited read-read concurrency. Moreover, the transformation is fully transparent, requiring almost no intervention from the end user. We demonstrate this via a sequential linked list queue as well as both the lock-free and blocking versions of the Michael-Scott queue. We show that Mangosteen outperforms the state-of-the-art approach based on FliT under high concurrency.