Persistent Memory Transactions

Persistent Memory Transactions

07 February 2017

This paper presents a comprehensive analysis of implementation choices for transaction runtime systems optimized for persistent memory. Our work focuses on performance implications of persist barriers, primitives required to persist writes on persistent memory. In the process we introduce a new taxonomy of persistence domains (portion of the memory hierarchy where the data is effectively persistent) that has a significant impact on persist barrier latencies. We present algorithms for undo logging, redo logging, and copy-on-write based transactions, as well as a memory allocator, all optimized to reduce persist barriers per transaction. Our microbenchmarking does a comprehensive sweep of read-write mix ratios in transactions, showing performance trends of the transaction runtimes under different assumptions about persist barrier latencies. No single runtime dominates the rest across the board. However, we pinpoint approximate readwrite ratio ranges where specific runtimes outperform the rest. Our analysis hightlights the significant influence of multiple factors on performance – transaction runtime specific bookkeeping overheads, persist barrier latencies, and cache locality. We find similar performance trade offs on three “real world” workloads – a key-value store of our own, SQLite, and memcached.


Venue : USENIX Annual Technical Conference

File Name : main.pdf