Lo(ck|g)-free Page Allocator for Non-Volatile Memory in the Linux Kernel

With the advent of new memory technologies, the focus of research in the field of operating systems is currently shifting from processing elements towards memory. Especially byte-addressable persistent memory (NVRAM) is currently heavily discussed in the scientific community, and its possibilities have been theoretically explored even before Intel released capable hardware in 2019.

In the ParPerOS project, we explore a new minimal, self-contained memory abstraction (morsel) that combines the two concepts of memory and file. It uses the (IO)MMU as the interface for sharing memory between different devices (DRAM, NVRAM, GPU, and Remote-DMA). It makes it possible to persist these mappings, and, optionally, it is data in NVRAM. Morsels must be lock-free to support non-os-controlled devices that cannot participate in complicated locking protocols, like GPUs. Additionally, locks are not particularly suitable for crash tolerance. Similarly, logging, the other often-used strategy to implement atomic transactions and persistency, is also avoided. The high amount of writes into NVRAM that logging causes are detrimental because of the performance characteristics of the current hardware and its wear-leveling. A new scalable and crash-tolerant page allocator for NVRAM is needed to persistently allocate memory for both the metadata and the content of morsels. The goal of this thesis is to design and implement a lock and log-free allocator for morsels. Thereby, the developed allocator should be tested with synthetic test cases and its performance should be compared to other allocation strategies, such as the existing Linux page allocator.