New non-volatile memory (NVM) technologies allow direct, durable storage of data in an application’s heap. Durable random-access memory can simplify the construction of reliable applications that do not lose data at a system shutdown or power failure. Existing NVM programming frameworks are intended for non-object-oriented native languages such as C and do not gracefully support an object-oriented language such as C++. They lack support for common abstractions — transient fields, function pointers, and virtual methods — which results in error-prone programming practices.
This paper proposes a new NVM language extension and runtime system that supports object-oriented programming and alleviates the programming pitfalls of prior approaches. At the heart of our approach is object reconstruction, which transparently restores a persistent object’s state during process restart. We describe
NVMReconstruction, a Clang/LLVM extension and a runtime library, which implements the language extension and object reconstruction that significantly simplifies writing correct programs that exploit byte-addressable persistent memory with these features: (i) transient fields in persistent objects, (ii) support for object-oriented requirements such as type inheritance and virtual functions, (iii) direct representation of persistent pointers as virtual addresses, and (iv) type-specific reconstruction of a persistent object during program restart. In addition,
NVMReconstruction supports upgrading an application, even if the size of an object increases, by enabling object migration.
NVMReconstruction also performs compaction to reduce fragmentation of the persistent heap. Experiments demonstrate the versatility of object reconstruction and its low runtime performance cost.
Thu 8 NovDisplayed time zone: Guadalajara, Mexico City, Monterrey change
15:30 - 17:00
|Cross-Component Garbage Collection|
Ulan Degenbaev Google, Jochen Eisinger Google, Kentaro Hara Google, Marcel Hlopko Google, Michael Lippautz Google, Hannes Payer GoogleDOI Media Attached
|Reactive Caching for Composed Services|
|Object-Oriented Recovery for Non-Volatile Memory|
|Software Multiplexing: Share Your Libraries and Statically Link Them Too|
Will Dietz University of Illinois at Urbana-Champaign, Vikram S. Adve University of Illinois at Urbana-ChampaignLink to publication DOI Pre-print