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.
Research wanted
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
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
Gelato@UNSW are researching superpage for IA64. For more information on superpages in general, and our approach in specific, see
http://www.gelato.unsw.edu.au/IA64wiki/SuperPages
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
Gelato@UNSW are looking at methods to abstract the Linux page tables.
http://www.gelato.unsw.edu.au/IA64wiki/PageTableInterface
Alternate Page Tables
Alternate page table implementations such as a variable radix page table might make for better performing systems.
Gelato@UNSW
Information on the variable radix page table
http://www.gelato.unsw.edu.au/IA64wiki/VariableRadixPageTables
Benchmarking
Benchmarking File System Benchmarks
http://www.filesystems.org/docs/fsbench/
ZCAV effect
Observing the Effects of Multi-Zone Disks
http://www.isi.edu/netstation/zcav/
Bonnie++ ZCAV testing program
http://www.coker.com.au/bonnie++/zcav/
Fragmentation (Avoidance)
Chunk allocation
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:
http://ozlabs.org/~cyeoh/presentations/memory_management_lca2006.pdf
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:
http://k42.ozlabs.org/Wiki/PageDescriptorArrays