TODO list, current projects and design issues
This page contains the TODO list for the Linux VM subsystem. It is hoped that
once in a while this page will be updated by Rik or any of the other developers,
if it hasn't been updated for too long, please ask us for an update.
If you have an item to add to the list or want to work on implementing any of
these TODO items, please mail to the firstname.lastname@example.org mailinglist.
Linux MM/VM TODO list:
- Trivial things (2.4.x?):
- Better I/O clustering for swap (and filesystem) I/O:
- Marcelo's swapin/out clustering code
- ->writepage() I/O clustering support
- page_launder()/->writepage() working together in avoiding low-yield
(small cluster) I/O at first and allowing smaller writeouts only when
VM pressure forces the system to need them
- include Ben LaHaise's code, which moves readahead to the VMA level,
this way we can do streaming swap I/O, complete with drop_behind()
- enforce RSS ulimit
- make madvise() work for both read() and mmap() type access, probably
for swap too (on a per-VMA level)
- More difficult things (2.5.x):
- physical->virtual reverse mapping, so we can do much better page aging
with less CPU usage spikes
- (NUMA) move all the global VM variables, lists, etc. into the pgdat
struct for better NUMA scalability
- (NUMA) per-node kswapd
- thrashing control, maybe process suspension with some forced swapping?
(easy in theory, hard in practice)
- experiment with different active lists / aging pages of different ages
at different rates + other page replacement improvements
- Quality of Service / fairness / ... improvements
- page table eviction and/or swapping
- variable sized pages (Daniel Phillips)
- use kiobufs for I/O instead of buffer heads
- the VM layer should know nothing of buffer heads
- block devices should use the page cache for /dev/hda et al
- prepare_write/commit_write should use kiobufs
- One of the BSD gurus made an excellent analysis of the weak and strong points
of Linux' MM/VM system.
- Rik van Riel's "Too little, too slow" lecture provides an ongoing (often
up-to-date) overview of what's going on with Linux VM and sometimes a few updates
on VM theory.
The Linux MM core team
Benjamin C.R. LaHaise <email@example.com>:
- Mailing list maintainer.
- Better swap performance under load.
- Move readahead to the VMA level.
Daniel Phillips <firstname.lastname@example.org>:
- Better I/O clustering.
- Variable sized pages.
Rik van Riel <email@example.com>:
- Better pageout selection mechanism, especially more performance under load.
- Better swapout clustering.
- I/O clustering in bdflush and page_launder().
- Thrashing control (swapping).
- RSS ulimit enforcement.
- Integrate Ben's patch for readahead at the VMA level and make the system
use both read clustering and/or readahead for read(), mmap() and anonymous memory,
honoring madvise()'s advise.
- Maintainer for the OOM killer and most things kswapd.
Christoph Rohland <firstname.lastname@example.org>:
- Maintainer for the shared memory code (mm/shmem.c).
Marcelo Tosatti <email@example.com>:
- Better I/O clustering for ext2 and swap.
- Improve I/O performance by other means (smarter process/bdflush interactions,
Stephen C. Tweedie <firstname.lastname@example.org>:
- [Non-MM] ext3 filesystem.
- Help with design for new VM things.