Mirror: making lock-free data structures persistent
Published in PLDI 2021: Programming Language Design and Implementation, 2021
Abstract: With the recent launch of the Intel Optane memory platform, non-volatile main memory in the form of fast, dense, byte-addressable non-volatile memory has now become available. Nevertheless, designing crash-resilient algorithms and data structures is complex and error-prone as caches and machine registers are still volatile and the data residing in memory after a crash might not reflect a consistent view of the program state. This complex setting has often led to durable data structures being inefficient or incorrect, especially in the concurrent setting. In this paper, we present MirrorÐa simple, general automatic transformation that adds durability to lock-free data structures, with a low performance overhead. Moreover, in the current non-volatile main memory configuration, where non-volatile memory operates side-by-side with a standard fast DRAM, our mechanism exploits the hybrid system to substantially improve performance. Evaluation shows a sig- nificant performance advantage over NVTraverse, which is the state-of-the-art general transformation technique, and over Intel’s concurrent lock-based key-value datastore. Ulike some previous transformations, Mirror does not req