|Title||Language-Based Optimizations for Persistence on Nonvolatile Main Memory Systems|
|Publication Type||Conference Paper|
|Year of Publication||2017|
|Authors||Denny, Joel E., Lee Seyong, and Vetter Jeffrey S.|
|Conference Name||2017 IEEE International Parallel and Distributed Processing Symposium (IPDPS)|
|Conference Location||Orlando, FL, USA|
|Keywords||automatic undo logging, canonical undo logging, Compilers, complex data structures, Complexity theory, cost modeling, cost-model-based dynamic selection technique, data structures, enterprise systems, Flash, Fusion-io ioScale device, HPC systems, Jacobian matrices, language-based optimization techniques, language-based optimizations, LLVM, logging optimizations, mobile systems, Non-volatile Memory, nonvolatile main memory systems, nonvolatile memory, NVL-C, NVL-C system, NVM testbed, Optimization, parallel processing, persistent memory, Program processors, Programming, programming systems, random-access storage, Resource management, shadow updates, software transactional memory, SSD, system monitoring|
Substantial advances in nonvolatile memory (NVM) technologies have motivated wide-spread integration of NVM into mobile, enterprise, and HPC systems. Recently, considerable research has focused on architectural integration of NVM and respective programming systems, exploiting NVM's trait of persistence correctly and efficiently. In this regard, we design several novel language-based optimization techniques for programming NVM and demonstrate them as an extension of our NVL-C system. Specifically, we focus on optimizing the performance of atomic updates to complex data structures residing in NVM. We build on two variants of automatic undo logging: canonical undo logging, and shadow updates. We show these techniques can be implemented transparently and efficiently, using dynamic selection and other logging optimizations. Our empirical results on several applications gathered on an NVM testbed illustrate that our cost-model-based dynamic selection technique can accurately choose the best logging variant across different NVM modes and input sizes. In comparison to statically choosing canonical undo logging, this improvement reduces execution time to as little as 53% for block-addressable NVM and 73% for emulated byte-addressable NVM on a Fusion-io ioScale device.