All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wu Fengguang <wfg@mail.ustc.edu.cn>
To: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: linux-kernel@vger.kernel.org
Subject: Re: vm-kswapd-incmin.patch problem
Date: Wed, 23 Nov 2005 12:06:19 +0800	[thread overview]
Message-ID: <20051123040619.GA4386@mail.ustc.edu.cn> (raw)
In-Reply-To: <20051122074818.GA3801@mail.ustc.edu.cn>

Hi Nick,

On Tue, Nov 22, 2005 at 03:48:18PM +0800, Wu Fengguang wrote:
> Hi, your vm-kswapd-incmin.patch looks nice, and I'd like to base my age
> balancing patch upon it. But while trying it, I ran into a problem.
> 
> $ cp bigfile /dev/null
> $ free -m    
>              total       used       free     shared    buffers     cached
> Mem:           501        495          6          0          2        321
> -/+ buffers/cache:        171        330
> Swap:          127          2        125
> $ sleep 10
> $ free -m    
>              total       used       free     shared    buffers     cached
> Mem:           501        244        257          0          4         66
> -/+ buffers/cache:        173        328
> Swap:          127          2        125
> 
> In a short time, the bigfile was totally evicted from page cache?
> 
> Before/after the huge free pages:
> 
> $ cat /proc/sys/fs/dentry-state
> 3393    28      45      0       0       0
> $ cat /proc/sys/fs/dentry-state
> 3626    260     45      0       0       0
> 
> 
> linux-2.6.15-rc1-mm2 without the patch seems ok.
> Any suggestions? Thanks.

Maybe I found the answer to it :)

I listed the dentry-state in several other normal machines, they all have
more than 10k unused dentries:

        54215   42155   45      0       0       0
        91704   81376   45      0       0       0
        96304   88832   45      0       0       0
        30057   26999   45      0       0       0

Then I disabled the shrinker by:
        echo 0 > /proc/sys/vm/vfs_cache_pressure

That increased the number from
        3393    28      45      0       0       0
to
        6247    2672    45      0       0       0
And there is no sudden huge increases of free pages any more.

Maybe your patch is shrinking the slabs much more, though I cannot confirm this
from the source code. But one thing I'm sure is that there should be a lower
bound for the unused dentries, either absolutely or relatively, something like
this:

--- linux-2.6.15-rc1-mm2.orig/fs/dcache.c
+++ linux-2.6.15-rc1-mm2/fs/dcache.c
@@ -860,7 +860,7 @@ static int shrink_dcache_memory(int nr, 
 			return -1;
 		prune_dcache(nr);
 	}
-	return (dentry_stat.nr_unused / 100) * sysctl_vfs_cache_pressure;
+	return (dentry_stat.nr_unused / 1000) * 10 * sysctl_vfs_cache_pressure;
 }
 
 /**


The original 100 is way too small. It should be much more than the SHRINK_BATCH(128).

Thanks,
Wu

       reply	other threads:[~2005-11-23  4:05 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20051122074818.GA3801@mail.ustc.edu.cn>
2005-11-23  4:06 ` Wu Fengguang [this message]
2005-11-23  8:01   ` vm-kswapd-incmin.patch problem Nick Piggin

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=20051123040619.GA4386@mail.ustc.edu.cn \
    --to=wfg@mail.ustc.edu.cn \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nickpiggin@yahoo.com.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.