linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* Re: + prevent-kswapd-from-freeing-excessive-amounts-of-lowmem.patch added to -mm tree
       [not found] <200709132211.l8DMBh0n008399@imap1.linux-foundation.org>
@ 2007-09-13  7:30 ` Nick Piggin
  0 siblings, 0 replies; only message in thread
From: Nick Piggin @ 2007-09-13  7:30 UTC (permalink / raw)
  To: akpm; +Cc: linux-mm, riel

On Friday 14 September 2007 08:11, akpm@linux-foundation.org wrote:
> The patch titled
>      mm: prevent kswapd from freeing excessive amounts of lowmem
> has been added to the -mm tree.  Its filename is
>      prevent-kswapd-from-freeing-excessive-amounts-of-lowmem.patch
>
> *** Remember to use Documentation/SubmitChecklist when testing your code
> ***
>
> See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find
> out what to do about this
>
> ------------------------------------------------------
> Subject: mm: prevent kswapd from freeing excessive amounts of lowmem
> From: Rik van Riel <riel@redhat.com>
>
> The current VM can get itself into trouble fairly easily on systems with a
> small ZONE_HIGHMEM, which is common on i686 computers with 1GB of memory.
>
> On one side, page_alloc() will allocate down to zone->pages_low, while on
> the other side, kswapd() and balance_pgdat() will try to free memory from
> every zone, until every zone has more free pages than zone->pages_high.
>
> Highmem can be filled up to zone->pages_low with page tables, ramfs,
> vmalloc allocations and other unswappable things quite easily and without
> many bad side effects, since we still have a huge ZONE_NORMAL to do future
> allocations from.
>
> However, as long as the number of free pages in the highmem zone is below
> zone->pages_high, kswapd will continue swapping things out from
> ZONE_NORMAL, too!
>
> Sami Farin managed to get his system into a stage where kswapd had freed
> about 700MB of low memory and was still "going strong".
>
> The attached patch will make kswapd stop paging out data from zones when
> there is more than enough memory free.  We do go above zone->pages_high in
> order to keep pressure between zones equal in normal circumstances, but the
> patch should prevent the kind of excesses that made Sami's computer totally
> unusable.
>
> Signed-off-by: Rik van Riel <riel@redhat.com>
> Cc: Nick Piggin <nickpiggin@yahoo.com.au>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Yeah, suppose this is a fix. It is somewhat arbitrary. (what isn't, in
vmscan.c...).

Slightly less arbitrary would be to just stop scanning if the zone is
above the high watermark + the lower zone protection...

> ---
>
>  mm/vmscan.c |    8 +++++++-
>  1 files changed, 7 insertions(+), 1 deletion(-)
>
> diff -puN
> mm/vmscan.c~prevent-kswapd-from-freeing-excessive-amounts-of-lowmem
> mm/vmscan.c ---
> a/mm/vmscan.c~prevent-kswapd-from-freeing-excessive-amounts-of-lowmem +++
> a/mm/vmscan.c
> @@ -1374,7 +1374,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);
> _
>
> Patches currently in -mm which might be from riel@redhat.com are
>
> vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-l
>ru.patch prevent-kswapd-from-freeing-excessive-amounts-of-lowmem.patch

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2007-09-13  7:30 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <200709132211.l8DMBh0n008399@imap1.linux-foundation.org>
2007-09-13  7:30 ` + prevent-kswapd-from-freeing-excessive-amounts-of-lowmem.patch added to -mm tree Nick Piggin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox