QuiescentNVM is a user-space runtime providing transparent failure-consistency guarantees for lock-based parallel programs executing on hybrid combinations of traditional DRAM and byte-addressable non-volatile memory (NVM) technologies. A dual-versioning mechanism performs in-place persistent writes over one copy, and consistent fallback guarantees are provided by the other copy. Thus, the two writes to NVM present in logging-based solutions (such as for durable memory transactions) are reduced to a single write. Further, we avoid the need to rewrite legacy applications to exploit durable transactions. Our system relies on its dual-copy framework operation that safely persists data during global quiescent states, where no thread must hold a lock on persistent data. For applications with low lock-contention, global lock-free quiescent states will occur sufficiently frequently, and we deliver better performance and lower wear to NVM than current systems. We do not cover high-lock contention scenarios while enforcing quiescent states to occur.
[1]
James R. Larus,et al.
Efficient logging in non-volatile memory by exploiting coherency protocols
,
2017,
Proc. ACM Program. Lang..
[2]
Patrick Th. Eugster,et al.
NVthreads: Practical Persistence for Multi-threaded Applications
,
2017,
EuroSys.
[3]
Xu Zhou,et al.
Write-Combined Logging: An Optimized Logging for Consistency in NVRAM
,
2015,
Sci. Program..
[4]
Emery D. Berger,et al.
Dthreads: efficient deterministic multithreading
,
2011,
SOSP.
[5]
Yan Solihin,et al.
Write-Aware Management of NVM-based Memory Extensions
,
2016,
ICS.
[6]
Michael M. Swift,et al.
Mnemosyne: lightweight persistent memory
,
2011,
ASPLOS XVI.