All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrea Arcangeli <andrea@suse.de>
To: Andrew Morton <akpm@osdl.org>
Cc: Neil Brown <neilb@cse.unsw.edu.au>, linux-kernel@vger.kernel.org
Subject: Re: Strange dcache memory pressure when highmem enabled
Date: Thu, 16 Oct 2003 15:33:04 +0200	[thread overview]
Message-ID: <20031016133304.GC1348@velociraptor.random> (raw)
In-Reply-To: <20031014224352.0171e971.akpm@osdl.org>

On Tue, Oct 14, 2003 at 10:43:52PM -0700, Andrew Morton wrote:
> Neil Brown <neilb@cse.unsw.edu.au> wrote:
> >
> > I noticed that shrink_caches calls shrink_dcache_memory independant
> >   of the classzone that is being shrunk.  So if we are trying to
> >   shrink ZONE_HIGHMEM, the dentry_cache is shrunk, even though the
> >   dentry_cache doesn't live in highmem.  However I'm not sure if I have
> >   understood the classzones well enough for that observation even to
> >   make sense.
> 
> Makes heaps of sense.  Here's an instabackport of what we did in 2.6:
> 
>  mm/vmscan.c |   12 +++++++++---
>  1 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff -puN mm/vmscan.c~a mm/vmscan.c
> --- 24/mm/vmscan.c~a	2003-10-14 22:41:34.000000000 -0700
> +++ 24-akpm/mm/vmscan.c	2003-10-14 22:42:22.000000000 -0700
> @@ -640,11 +640,17 @@ int try_to_free_pages_zone(zone_t *class
>  			nr_pages = shrink_caches(classzone, gfp_mask, nr_pages, &failed_swapout);
>  			if (nr_pages <= 0)
>  				return 1;
> -			shrink_dcache_memory(vm_vfs_scan_ratio, gfp_mask);
> -			shrink_icache_memory(vm_vfs_scan_ratio, gfp_mask);
> +			if (classzone - classzone->zone_pgdat->node_zones <
> +						ZONE_HIGHMEM) {
> +				shrink_dcache_memory(vm_vfs_scan_ratio,
> +							gfp_mask);
> +				shrink_icache_memory(vm_vfs_scan_ratio,
> +							gfp_mask);
>  #ifdef CONFIG_QUOTA
> -			shrink_dqcache_memory(vm_vfs_scan_ratio, gfp_mask);
> +				shrink_dqcache_memory(vm_vfs_scan_ratio,
> +							gfp_mask);
>  #endif
> +			}
>  			if (!failed_swapout)
>  				failed_swapout = !swap_out(classzone);
>  		} while (--tries);

An highmem user can make use of lowmem too. Think a 1G box, it looks
wrong to disallow highmem to shrink the 800M of dcache in the normal/dma
zones.

I wonder if what he's suffering from is a reduced normal zone due the
mem_map_t being larger. The reduced normal zone will trigger the dcache
shrinking more frequently. But he may want to try again with 2.4.23pre7
with a classzone aware refill_inactive that will ensure the inactive
list has enough lowmem pages before shrink_caches claims failure.

Andrea - If you prefer relying on open source software, check these links:
	    rsync.kernel.org::pub/scm/linux/kernel/bkcvs/linux-2.[45]/
	    http://www.cobite.com/cvsps/

  parent reply	other threads:[~2003-10-16 13:32 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-15  4:33 Strange dcache memory pressure when highmem enabled Neil Brown
2003-10-15  5:05 ` Bryan O'Sullivan
2003-10-15  5:10   ` Neil Brown
2003-10-15  5:43 ` Andrew Morton
2003-10-15  5:46   ` Neil Brown
2003-10-15  9:58     ` Stephan von Krawczynski
2003-10-16 13:33   ` Andrea Arcangeli [this message]
2003-10-21 22:57     ` Neil Brown
2003-10-22  1:03       ` Andrea Arcangeli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20031016133304.GC1348@velociraptor.random \
    --to=andrea@suse.de \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=neilb@cse.unsw.edu.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.