Overview

Metall is 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 SSD and Intel Optane DC Persistent Memory).

Metall relies on a memory-mapped file mechanism (mmap), to map a file in a filesystem into the virtual memory of an application, allowing the application to access the mapped region as if it were regular memory.

Such mapped area can be larger than the physical main-memory of the system, allowing applications to address datasets larger than physical memory (often referred to as out-of-core or external memory).

Metall incorporates state-of-the-art allocation algorithms in SuperMalloc with the rich C++ interface developed by Boost.Interprocess, and provides persistent memory snapshotting (versioning) capabilities.

Example programs that use Metall are listed here.

Metall Overview

Publication

Metall: A Persistent Memory Allocator Enabling Graph Processing

@INPROCEEDINGS{8945094,
author={K. {Iwabuchi} and L. {Lebanoff} and M. {Gokhale} and R. {Pearce}},
booktitle={2019 IEEE/ACM 9th Workshop on Irregular Applications: Architectures and Algorithms (IA3)},
title={Metall: A Persistent Memory Allocator Enabling Graph Processing},
year={2019},
pages={39-44},
doi={10.1109/IA349570.2019.00012},
month={Nov},}

IEEE Xplore page