NVthreads: Practical persistence for multi-threaded applications
Proceedings of the Twelfth European Conference on Computer Systems, 2017•dl.acm.org
Non-volatile memory technologies, such as memristor and phase-change memory, will allow
programs to persist data with regular memory instructions. Liberated from the overhead to
serialize and deserialize data to storage devices, programs can aim for high performance
and still be crash fault-tolerant. Unfortunately, to leverage non-volatile memory, existing
systems require hardware changes or extensive program modifications. We present
NVthreads, a programming model and runtime that adds persistence to existing multi …
programs to persist data with regular memory instructions. Liberated from the overhead to
serialize and deserialize data to storage devices, programs can aim for high performance
and still be crash fault-tolerant. Unfortunately, to leverage non-volatile memory, existing
systems require hardware changes or extensive program modifications. We present
NVthreads, a programming model and runtime that adds persistence to existing multi …
Non-volatile memory technologies, such as memristor and phase-change memory, will allow programs to persist data with regular memory instructions. Liberated from the overhead to serialize and deserialize data to storage devices, programs can aim for high performance and still be crash fault-tolerant. Unfortunately, to leverage non-volatile memory, existing systems require hardware changes or extensive program modifications.
We present NVthreads, a programming model and runtime that adds persistence to existing multi-threaded C/C++ programs. NVthreads is a drop-in replacement for the pthreads library and requires only tens of lines of program changes to leverage non-volatile memory. NVthreads infers consistent states via synchronization points, uses the process memory to buffer uncommitted changes, and logs writes to ensure a program's data is recoverable even after a crash. NVthreads' page level mechanisms result in good performance: applications that use NVthreads can be more than 2× faster than state-of-the-art systems that favor fine-grained tracking of writes. After a failure, iterative applications that use NVthreads gain speedups by resuming execution.
ACM Digital Library