Hmmm ... we need something real for 2.2 ... so,
let's analyse the problem
If the average time slice of the processes is eaten up by
swapping page back *and* if these pages are spapped out
during to the next time slice the system becomes unusable
(freeing swap cached pages on the first pass of shrink_mmap()
does force this behaviour at high stress).
Therefore we need something like a page ageing which does not
mean that the old scheme is required.
Pages which are swapped in need a higher life time in
physical memory. If a page can be shared this life
time could be a bigger one.
If a process counts such pages up to a limit his pages
should not get a higher life for the next few cycles.
This simple scheme should be implementable in a easy way,
shouldn't it? The appropiate places are
ipc/shm.c::shm_swap_in()
mm/page_alloc.c::swap_in()
and the old place of the old age_page():
mm/vmscan.c::try_to_swap_out()
together with some unused variables out of
include/linux/sched.h::task_struct (e.g. dec_flt)
include/linux/sched.h::struct page (e.g. unused :-)
nothing more is needed due to the better swap cache of
2.1.129 in comparision to 2.0.36.
Werner
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/