Evaluating PMO Sync Implementation for Persistent Memory Object
Faishal Wahiduddin · Journal of International Crisis and Risk Communication Research · 2021
Persistent Memory, in the form of byte-addressable Non-Volatile Memories (NVMs), provides a low-cost and high-capacity main memory, and provides the ability to store and retain data even when the system is powered off, along with improved performance over traditional storage. Persistent Memory Direct Access (DAX) enables applications to perform byte-addressable operations such as load and store. Filesystem-DAX can store persistent data in NVMs with system call overheads. In order to reduce filesystem overheads, this study utilizes Persistent Memory Object (PMO) as an abstraction for persistent data containers on Non-Volatile Memory (NVM). Persisting data in Persistent Memory Object requires that the system supports atomic transaction and crash consistency. This study proposes PMO Sync implementation to achieve atomic transaction and crash consistency in Persistent Memory Object. We evaluate three different instructions support: CLFLUSH, CLFLUSHOPT, CLWB; two persistency models, and two atomic update mechanisms: undo logging and shadow copy as a basis of PMO Sync and introduce PMO Sync Table to keep track of modified data. We abstract memory operation, persistency model, and atomic update mechanism as PMO Sync call to persist updates to NVM. PMO Sync reduces performance overheads by avoiding flush and fence operations for every write and providing atomic transaction and gives flexibility to programmer to persist changes. Experimental results show that the PMO Sync implementation reduces execution time and the number of writes compared to undo logging and shadow copy mechanisms.