Survey of NVM Allocator

Goals

  • A good allocator should:

    • Memory Usage (fragmentation/overhead)
    • Performance (Tput)
    • Scalability (linearly)
    • Correctness
    • Robustness
  • A good NVM allocator should:

    • Recovery (time overhead)
    • Programablility (easy-to-use)
    • TODO….

Recovery

  • Essentially, bitmap is a general method to maintain the peristent status of allocator. With bitmap, every bit can indicate this block is in-used or not

Defragmentation

Start-of-art

  • nvm_malloc (VLDB’ 16)

    • Small-size => segregated-fit, larger-size => best-fit
    • Three-size allocation strategy
  • Makalu (OOPLSA’ 16)

    • Keeping volatiled pointer is still valid by using a fixed pool address (MAP_FIXED flag of mmap)
  • NVML (intel Pmem)

    • Support concurrent => Local thread cache
    • Minimize fragmentation => A chunk (256KB) is divided into blocks of 8X the class size.
  • PAllocator

    • Small/Larger/Huge Allocator

Comparsion