Makalu: Fast Recoverable Allocation of Non-volatile Memory
Abstract
Byte addressable non-volatile memory (NVRAM) is likely to
supplement, and perhaps eventually replace, DRAM. Applications
can then persist data structures directly in memory
instead of serializing them and storing them onto a
durable block device. However, failures during execution
can leave data structures in NVRAM unreachable or corrupt. In
this paper, we address memory management of non-volatile
memory, offering an integrated allocator and garbage collector
that maintains internal consistency, minimizes memory
leaks, and is efficient in the face of failures.
We show that a careful allocator design can both support a
less restrictive and much more familiar programming model.
By lazily persisting non-essential metadata and by employing
a post-failure recovery-time garbage collector, the per
allocation persistence overhead is greatly reduced. Experimental
results show that the resulting online speed and scalability
of our allocator are comparable to well-known transient
allocators and significantly better than state-of-the-art
persistent allocators.
supplement, and perhaps eventually replace, DRAM. Applications
can then persist data structures directly in memory
instead of serializing them and storing them onto a
durable block device. However, failures during execution
can leave data structures in NVRAM unreachable or corrupt. In
this paper, we address memory management of non-volatile
memory, offering an integrated allocator and garbage collector
that maintains internal consistency, minimizes memory
leaks, and is efficient in the face of failures.
We show that a careful allocator design can both support a
less restrictive and much more familiar programming model.
By lazily persisting non-essential metadata and by employing
a post-failure recovery-time garbage collector, the per
allocation persistence overhead is greatly reduced. Experimental
results show that the resulting online speed and scalability
of our allocator are comparable to well-known transient
allocators and significantly better than state-of-the-art
persistent allocators.