Index: linux-2.6.7-bk20/mm/vmscan.c =================================================================== --- linux-2.6.7-bk20.orig/mm/vmscan.c 2004-07-10 20:10:25.324562938 +1000 +++ linux-2.6.7-bk20/mm/vmscan.c 2004-07-10 21:17:08.045968091 +1000 @@ -801,20 +801,23 @@ { unsigned long nr_active; unsigned long nr_inactive; + unsigned long mapped_bias; + + mapped_bias = 151 - vm_swappiness; /* * Add one to `nr_to_scan' just to make sure that the kernel will * slowly sift through the active list. */ zone->nr_scan_active += (zone->nr_active >> sc->priority) + 1; - nr_active = zone->nr_scan_active; + nr_active = zone->nr_scan_active * 150 / mapped_bias; if (nr_active >= SWAP_CLUSTER_MAX) zone->nr_scan_active = 0; else nr_active = 0; zone->nr_scan_inactive += (zone->nr_inactive >> sc->priority) + 1; - nr_inactive = zone->nr_scan_inactive; + nr_inactive = zone->nr_scan_inactive * 150 / mapped_bias; if (nr_inactive >= SWAP_CLUSTER_MAX) zone->nr_scan_inactive = 0; else