We present Metall, a persistent memory allocator designed to provide developers with an API to allocate custom C++ data structures in both block-storage and byte-addressable persistent memories (e.g., NVMe and Intel Optane DC Persistent Memory). Metall incorporates the state-of-the-art allocation algorithms in Supermalloc with the rich C++ interface developed by Boost.Interprocess, and provides persistent memory snapshotting (versioning) capabilities. We perform a performance evaluation using a graph construction benchmark, persistently storing data structures on NVMe SSDs and byte-addressable persistent memory. Our approach using Metall works without code modifications in both sceneries — block-addressable and byte-addressable. Metall provides a coarse-grained consistency model, allowing the application to determine when it is appropriate to create durable snapshots of the persistent heap.
Dr. Iwabuchi received his Ph.D. in Mathematical and Computing Sciences from Tokyo Institute of Technology in 2017. He joined CASC as a postdoctoral researcher in 2017, and became a staff scientist in 2020.