Persistent Pointers for Non-Volatile Memory

Non-volatile memory (NVM) is a new memory technolgy, which is like DRAM in speed and latency, but it will keep stored values even through power cycles. It is believed to become larger and cheaper as DRAM, while rivaling it in speed and power consumption. It can be accessed at byte granularity, the same way DRAM is, i.e. with normal mov instructions.

Loads of previous work focused on using NVM as file system or object storage. Some of them worked on making pointers in NVM persistent. When allocating objects in NVM, inter-object pointers could become potentially corrupted on power cycles, if the system maps the NVM to a different place in virtual memory.

For example, in a linked list every node points to the succeeding one. However, when using virtual memory addresses, like they are used by the processor, the list will become corrupt once the linked list is not mapped to the same virtual address, after a power cycle, as the pointers become invalid. They could either point to not-mapped memory, resulting in a page fault, or point into other (persistent) data, which may lead to potentially more data corruption, which goes unnoticed.

There are solutions to that problem by using special persistent pointers in software (or modifying the hardware to support them), and traversing translation tables, whenever a pointer needs to be dereferenced.

In this thesis you explore and implement other ideas of persistent pointers in NVM and evaluate, whether they suffice for communication of data. This means files and intermediate formats like XML or JSON as communication format between processes shall be replaced by sharing non-volatile regions and pointers.

Tasks in this thesis

  • Implement persistent pointers in Linux
  • Implement sharing of persistent pointers and regions in NVM between processes
  • Modify an existing library (e.g. an XML library) to use NVM instead of files
    • Evaluate performance gains or losses of two modified applications using this library

Requirements

  • Some experience with working on Linux-code

Further Reading

A Persistent Problem: Managing Pointers in NVM
Daniel Bittman, Peter Alvaro, Ethan L. MillerProceedings of the 10th Workshop on Programming Languages and Operating SystemsACM2019.
10.1145/3365137.3365397 [BibTex]