Morsel Managment Layer: Making Morsels Actually Useful

The idea of morsels is to employ a new memory management paradigm where memory management shifts from individual pages to whole page-table subtrees. The handling as an indivisible unit instead of many individual pages reduces operating system overhead and bookkeeping efforts. Morsels are conceptually self-contained, meaning that a morsel memory object can be interpreted without additional metadata. This property makes morsels well-suited for new non-volatile memory that functions like conventional main memory but keeps data across power cycles. In contrast to other storing and sharing mechanisms, we can directly store pointer-based data structures in morsels if we ensure that the mapping address is always the same, thus saving costly serialization and deserialization.

The current implementation provides the raw memory primitive, and the related operations create, map and destroy. It lacks an upper management layer that provides features like name resolution and rights management, which are both essential for the use of morsels in user applications. Additional features like usage tracking and managing the virtual address space to avoid collisions for morsels with fixed mapping addresses are also desirable. All those functions should obey the overall design principles of morsels: Crash consistency (non-volatile memory), scalability (many cores and much memory), as well as efficiency. Your task would be the conceptual design, implementation and evaluation of such a management layer.

Recommended skills: Programming in C, Linux, basic knowledge of paging and memory management


Primitives and Abstractions for Self-Contained Virtual-Memory Areas in the Linux kernel

Implement the basic abstraction for self-contained virtual-address-space areas in Linux, by which we want to ease the allocation, the sharing, and the management of huge amounts of memory. [PDF]



Lars Wrenger
Florian Rommel
Christian Dietrich
Daniel Lohmann


Alexander Halbuer (abgegeben: 16. Nov 2022)