Managing Free Pages for an Explicit Virtual-Memory Interface

Memory-Mapped I/O (MMIO) is attractive for applications because the OS takes care of the memory management. However, its speed is limited by high overheads, whose effects are exacerbated by new fast block storage. Certain applications like databases can also face consistency problems because the OS can write memory back to disk at any point during transactions.

Exmap is a new operating system interface for managing memory separate from the system's memory management within a limited address range. With exmap, applications can explicitly control allocation and eviction of 4K pages. Additionally, exmap outperforms the MMIO provided by Linux significantly, and can easily saturate multiple modern high-speed SSDs.

The memory area managed by exmap contains a fixed number of pages taken from the system, which are not returned during its lifetime. This limited pool of free pages has to be distributed within exmap. Currently, exmap is controlled via a number of interfaces, each with their own list of free pages.

Allocation at an interface with no available free pages leads to stealing of pages from another interface. The method for this is rather basic at the moment, which slows down exmap in situations with lots of stealing.

In this thesis, alternatives should be designed and evaluated. These may be better stealing algorithms, or even a restructuring of the internal page distribution so that stealing is never even needed.