|
Description:
This patch implements a kswapd process for each memory zone. The original
code
came from Bill Irwin, but the current VM is quite a bit different from the one
that he wrote it for, so not much remains. The current kswapd interface is
much
more simple than before because there is a single waitqueue and there is a
single place where it is emptied.
kswapd_can_sleep() and kswapd_balance() are simpler now that the extra pgdat
level of indirection is gone.
Tested on 8-way PIII with highmem off and then 4GB support. With 4GB support,
I
did 20 parallel greps through a 10GB fileset while some other processes
allocated and freed 1-2GB chunks of memory. That gave kswapd a good workout,
and I observed it running the zone Highmem and zone Normal kswapd threads.
So,
it survives my torture test. It also removes more code than it adds.
include/linux/mmzone.h | 2 +
include/linux/swap.h | 1
mm/page_alloc.c | 11 +++++-
mm/vmscan.c | 88
+++++++++++++++++--------------------------------
4 files changed, 42 insertions(+), 60 deletions(-)
|