Where might the Linux MM be headed in years to come? If you are doing any (Linux or other) MM related research, please add a blurb and any links to your work here.
A few years ago, Rik put up a web page outlining why VM research is needed. In the early 1980's a lot of people were of the opinion that "everything there is to know about memory management has been done". This is like saying we will never need a sort algorithm besides bubble sort. Both 1970's VM knowledge and bubble sort have been obsoleted by scalability issues, and research is needed again...
If you know of a specific problem area that could use research, please add it to the /ResearchWanted page.
Superpages utilise the ability of many processors to use not just a base page size, but multiples of it. In the current kernel we have the HugeTLB system, which is suitable for x86 which has only two possible page sizes; small (4K) or huge (4MB). Other systems, such as IA64 can have many page sizes inbetween, and you can greatly reduce TLB usage by mapping in larger pages.
Gelato@UNSW are researching superpage for IA64. For more information on superpages in general, and our approach in specific, see
Page Table Abstraction
3/4 Level page tables aren't a great solution for a sparsely populated 64 bit address space. However, internally the kernel is very much tied to the PGD/PMD/PTE structure for page tables (stemming from its x86 heritage where this is the most sensible solution).
For research into other methods, we would like to be able to abstract the page table implementation from the kernel.
Gelato@UNSW are looking at methods to abstract the Linux page tables.
Alternate Page Tables
Alternate page table implementations such as a variable radix page table might make for better performing systems.
Information on the variable radix page table
Benchmarking File System Benchmarks
Observing the Effects of Multi-Zone Disks
Bonnie++ ZCAV testing program
A team at the IBM LTC is currently investigating a new memory management technique to reduce memory fragmentation to better support, for example, large-pages. Memory is handed out to a consumer (e.g., a process or group of files) in larger (variable-sized) chunks and then internally sub-allocated by that consumer to handle its needs. All the memory handed out to a single consumer has the same expected lifetime, e.g., the computation memory handed to a process has the expected lifetime of that process. Hence, handing out contiguous memory to that consumer naturally avoids fragmentation. We also expect we can achieve performance improvements due to reduced synchronization and more cache friendly data structures.
A presentation of the work done so far was given at Linux.conf.au 2006 and the slides are available here:
The current implementation has been done on K42 (http://www.research.ibm.com/K42/) but we are currently looking at implementing it in Linux. Some more info which is mostly K42 specific is on the K42 wiki here: