Messages in this thread Patch in this message | | | Date | Wed, 05 Sep 2007 12:24:26 -0400 | From | Rik van Riel <> | Subject | Re: kernel 2.6.22: what IS the VM doing? |
| |
Sami Farin wrote: > On Tue, Sep 04, 2007 at 21:37:35 -0400, Rik van Riel wrote: >> Is the system trying to evict pages like crazy when your >> system becomes unusable? > > I think so.. > >> If so, I wonder if kswapd is simply doing the wrong thing >> and trying to evict data from all zones, simply because the >> highmem zone is low on free pages... > > *shrug*
The attached patch should make sure kswapd does not free an excessive number of pages in zone_normal just because the pages in zone_highmem are difficult to free.
It does give kswapd a large margin to continue putting equal pressure on all zones in normal situations.
Sami, could you try out this patch to see if it helps your situation?
Signed-off-by: Rik van Riel <riel@redhat.com> --- linux-2.6.22.noarch/mm/vmscan.c.excessive 2007-09-05 12:19:49.000000000 -0400 +++ linux-2.6.22.noarch/mm/vmscan.c 2007-09-05 12:21:40.000000000 -0400 @@ -1371,7 +1371,13 @@ loop_again: temp_priority[i] = priority; sc.nr_scanned = 0; note_zone_scanning_priority(zone, priority); - nr_reclaimed += shrink_zone(priority, zone, &sc); + /* + * We put equal pressure on every zone, unless one + * zone has way too many pages free already. + */ + if (!zone_watermark_ok(zone, order, 8*zone->pages_high, + end_zone, 0)) + nr_reclaimed += shrink_zone(priority, zone, &sc); reclaim_state->reclaimed_slab = 0; nr_slab = shrink_slab(sc.nr_scanned, GFP_KERNEL, lru_pages); | |