MorselFS: Reinventing In-Memory File Systems with the Help of Self-Contained Virtual-Memory Objects

image

MorselFS concept

Context

Morsels are self-contained virtual-memory objects. They break with the Mach memory model by managing virtual memory on the granularity of objects rather than single pages. In practice, they are represented by a page table sub-tree of a virtual address space. This also allows them to be self-contained: all information needed to describe a Morsel (i.e. the page table sub-tree) is part of the morsel itself. Additionally, it makes it possible to map and unmap Morsels with a single atomic operation on a page table entry.

While Morsels are not files themselves, they are represented by file descriptors in the implementation for Linux, which allows them to integrate seemlessly into existing applications.

Problem

When Morsels are integrated into existing applications, however, they often act as replacements for traditional file mappings. This leads to additional overhead, such as copying the contents of the actual file into the morsel on its first mapping. Moreover, multiple calls into kernel space are necessary to select an existing Morsel and create a copy of it to privately map a file into an address space.

Goal

Your task will be to implement an in-memory file system that is based on morsels. Imposing the file semantics on morsels should help to reduce some of the mentioned overhead. Additionally, a file system based on Morsels opens up some new opportunities. First and foremost, as Morsels self-cotained, the FS should also be entirely self-contained. This means that the FS itself is a Morsel that contains other Morsels which hold either metadata or represent files. In a next step, secondary views on Morsels should make it possible to seemlessly share an instance of the FS with a virtual machine.

Topics: C, Linux Kernel, Virtual Memory, File Systems, Morsels

References

Overview of the Linux Virtual File System - The Linux Kernel documentation

Papers

DIMES Workshop
Morsels: Explicit Virtual Memory Objects
Alexander Halbuer, Christian Dietrich, Florian Rommel, Daniel LohmannProceedings of the 1st Workshop on Disruptive Memory SystemsAssociation for Computing Machinery2023.
PDF Details Slides 10.1145/3609308.3625267 []