|
Replace the global page LRUs with per-zone LRUs.
This fixes the failure described at
http://mail.nl.linux.org/linux-mm/2002-08/msg00049.html
It will also fixes the problem wherein a search for a reclaimable
ZONE_NORMAL page will undesirably move aged ZONE_HIGHMEM pages to the
head of the inactive list. (I haven't tried to measure any benefit
from this aspect).
It will also reduces the amount of CPU spent scanning pages in page
reclaim. I haven't instrumented this either.
This is a minimal conversion - the aging and reclaim logic is left
unchanged, as far as is possible.
I was bitten by the "incremental min" logic in __alloc_pages again.
There's a state in which the sum-of-mins exceeds zone->pages_high. So
we call into try_to_free_pages(), which does nothing at all (all zones
have free_pages > pages_high). The incremental min is unchanged and
the VM locks up.
This was fixed in __alloc_pages: if zone->free_pages is greater than
zone->pages_high then just go and grab a page.
|