NVAlloc
Source code for NVAlloc-ASPLOS'22
Install / Use
/learn @ISCS-ZJU/NVAllocREADME
NVAlloc: Rethinking Heap Metadata Management in Persistent Memory Allocators
NVAlloc is a heap memory allocator for persistent memory (e.g., Intel Optane DCPMM); it emphasizes efficiently eliminating cache line reflushes and small random writes and alleviating slab-induced memory fragmentation in heap metadata management. NVAlloc has three new techniques:
- Interleaved Mapping
- Log-structured Bookkeeping
- Slab Morphing
Please read the following paper for more details:
Warning
The code can only be used for academic research.
We use part of jemalloc's code in our source code, please check jemalloc's COPYRIGHT.
Directories
- bin : output executable files
- lib : output library files
- include : header files
- include/internal/nvalloc_internal.h : It includes all header files, and should be included by all source files.
- src : source files
- test/src: test source files
System Requirements
- 2nd Generation Intel Xeon Scalable Processors
- Intel® Optane™ Persistent Memory 100 Series
- cmake (version > 3.10)
- libpmem
- libjemalloc
Build
autogen.sh [d/r]
autogen.sh [d/r] [testname]
autogen.sh encapsulates CMakeLists.txt:
- [d/r] : debug/release
- [testname] : build test/src/testname.cpp
Other
Default pmem directory: /mnt/pmem/nvalloc_files/
Example
./autogen.sh r example # test/src/example.cpp
./bin/example
