All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wu Fengguang <fengguang.wu@intel.com>
To: Martin Knoblauch <spamtrap@knobisoft.de>
Cc: Peter Zijlstra <peterz@infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Myklebust, Trond" <Trond.Myklebust@netapp.com>,
	Peter Staubach <staubach@redhat.com>,
	linux-fsdevel@vger.kernel.org
Subject: Re: Likley stupid question on "throttle_vm_writeout"
Date: Tue, 10 Nov 2009 21:08:18 +0800	[thread overview]
Message-ID: <20091110130818.GA6229@localhost> (raw)
In-Reply-To: <707547.6272.qm@web32605.mail.mud.yahoo.com>

On Tue, Nov 10, 2009 at 08:01:47PM +0800, Martin Knoblauch wrote:
> ----- Original Message ----
> 
> > From: Wu Fengguang <fengguang.wu@intel.com>
> > To: Peter Zijlstra <peterz@infradead.org>
> > Cc: Martin Knoblauch <spamtrap@knobisoft.de>; linux-kernel@vger.kernel.org
> > Sent: Tue, November 10, 2009 3:08:58 AM
> > Subject: Re: Likley stupid question on "throttle_vm_writeout"
> > 
> > On Mon, Nov 09, 2009 at 04:26:33PM +0100, Peter Zijlstra wrote:
> > > On Mon, 2009-11-09 at 07:15 -0800, Martin Knoblauch wrote:
> > > > Hi, (please CC me on replies)
> > > > 
> > > >  I have a likely stupid question on the function "throttle_vm_writeout". 
> > Looking at the code I find:
> > > > 
> > > >                 if (global_page_state(NR_UNSTABLE_NFS) +
> > > >                         global_page_state(NR_WRITEBACK) <= dirty_thresh)
> > > >                                 break;
> > > >                 congestion_wait(WRITE, HZ/10);
> > > > 
> > > > Shouldn't the NR_FILE_DIRTY pages be considered as well?
> > > 
> > > Ha, you just trod onto a piece of ugly I'd totally forgotten about ;-)
> > > 
> > > The intent of throttle_vm_writeout() is to limit the total pages in
> > > writeout and to wait for them to go-away.
> > 
> > Like this:
> > 
> >         vmscan fast => large NR_WRITEBACK => throttle vmscan based on it
> > 
> > > Everybody hates the function, nobody managed to actually come up with
> > > anything better.
> > 
> > btw, here is another reason to limit NR_WRITEBACK: I saw many
> > throttle_vm_writeout() waits if there is no wait queue to limit
> > NR_WRITEBACK (eg. NFS). In that case the (steadily) big NR_WRITEBACK
> > is _not_ caused by fast vmscan..
> > 
> 
>  That is exactely what made me look again into the code. My observation is that when doing something like:
> 
> dd if=/dev/zero of=fast-local-disk bs=1M count=15000
> 
> most of the "dirty" pages are in NR_FILE_DIRTY with some relatively small amount (10% or so) in NR_WRITEBACK. If I do:
> 
> dd if=/dev/zero of=some-nfs-mount bs=1M count=15000
> 
> NR_WRITEBACK almost immediatelly goes up to dirty_ratio, with
> NR_UNSTABLE_NFS small. Over time NR_UNSTABLE_NFS grows, but is
> always lower than NR_WRITEBACK (maybe 40/60).

This is interesting, though I don't see explicit NFS code to limit
NR_UNSTABLE_NFS. Maybe there are some implicit rules.

>  But don't ask what happens if I do both in parallel.... The local
>  IO really slows to a crawl and sometimes the system just becomes
>  very unresponsive. Have we heard that before? :-)

You may be the first reporter as far as I can tell :)

>  Somehow I have the impression that NFS writeout is able to
>  absolutely dominate the dirty pages to an extent that the system is
>  unusable.

This is why I want to limit NR_WRITEBACK for NFS:

        [PATCH] NFS: introduce writeback wait queue
        http://lkml.org/lkml/2009/10/3/198

Thanks,
Fengguang

  reply	other threads:[~2009-11-10 13:08 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-09 15:15 Likley stupid question on "throttle_vm_writeout" Martin Knoblauch
2009-11-09 15:26 ` Peter Zijlstra
2009-11-10  2:08   ` Wu Fengguang
2009-11-10  6:55     ` KOSAKI Motohiro
2009-11-10 12:01     ` Martin Knoblauch
2009-11-10 13:08       ` Wu Fengguang [this message]
2009-11-10 16:11         ` Martin Knoblauch
2009-11-11  0:45           ` Wu Fengguang

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=20091110130818.GA6229@localhost \
    --to=fengguang.wu@intel.com \
    --cc=Trond.Myklebust@netapp.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=spamtrap@knobisoft.de \
    --cc=staubach@redhat.com \
    /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.