Hurd/Mach presently make very bad use of the available physical memory in the system. Some of the problems are inherent to the system design (the kernel can't distinguish between important application data and discardable disk buffers for example), and can't be fixed without fundamental changes. Other problems however are an ordinary lack of optimization, like extremely crude heuristics when to start paging. (See for example.) Many parameters are based on assumptions from a time when typical machines had like 16 MiB of RAM, or simply have been set to arbitrary values and never tuned for actual use.

The goal of this project is to bring the virtual memory management in Hurd/Mach closer to that of modern mainstream kernels (Linux, FreeBSD), by comparing the implementation to other systems, implementing any worthwhile improvements, and general optimization/tuning. It requires very good understanding of the Mach VM, and virtual memory in general.

This project is related to GNU Savannah task #5489.

Possible mentors: Samuel Thibault (youpi)

Exercise: Make some modification to the existing VM code. You could try to find a piece of code that can be improved with simple code optimization, for example.