Object-Oriented Recovery for Non-Volatile Memory
summary
NVMReconstruction implements a Clang/LLVM extension plus runtime library that reconstructs persistent C++ objects after restart by zeroing transient fields, fixing virtual table and function pointers, remapping persistent pointers, and running per-type reconstructors; it also supports object migration and heap compaction to enlarge and defragment objects. Integrated with Atlas and used to add recovery to Echo with only 214 lines of code. Evaluation shows under 1% runtime overhead and restart fault handling around 100–200 ms per GB.
AI-written summary · about
chapters (19)
- 0:00Intro
- 0:18Contributions
- 0:31Background: Non-Volatile Memory
- 1:20NVM Lifecycle
- 2:23Execution Specific Data
- 4:07Execution Specific Pointers
- 4:35Execution Specific NVM Pointers
- 5:22Different mmap addresses
- 6:14Code Pointers
- 6:52Existing Solutions
- 8:48NVM Reconstruction Code
- 9:45System Behavior
- 10:19NVM Reconstruction System
- 10:45NVM Reconstruction Recovery
- 12:10Lazy Reconstruction
- 12:56Compaction
- 14:46Measurements: Atlas
- 15:42Measurements: Echo KV Store
- 16:42Conclusions
