From: Mel Gorman <mel@csn.ul.ie>
To: Shaohua Li <shaohua.li@intel.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>,
"Wu, Fengguang" <fengguang.wu@intel.com>, Jan Kara <jack@suse.cz>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/3] writeback: Record if the congestion was unnecessary
Date: Fri, 27 Aug 2010 10:20:04 +0100 [thread overview]
Message-ID: <20100827092003.GA19556@csn.ul.ie> (raw)
In-Reply-To: <1282875130.17594.2.camel@sli10-conroe.sh.intel.com>
On Fri, Aug 27, 2010 at 10:12:10AM +0800, Shaohua Li wrote:
> On Fri, 2010-08-27 at 04:31 +0800, Mel Gorman wrote:
> > On Thu, Aug 26, 2010 at 08:29:04PM +0200, Johannes Weiner wrote:
> > > On Thu, Aug 26, 2010 at 04:14:15PM +0100, Mel Gorman wrote:
> > > > If congestion_wait() is called when there is no congestion, the caller
> > > > will wait for the full timeout. This can cause unreasonable and
> > > > unnecessary stalls. There are a number of potential modifications that
> > > > could be made to wake sleepers but this patch measures how serious the
> > > > problem is. It keeps count of how many congested BDIs there are. If
> > > > congestion_wait() is called with no BDIs congested, the tracepoint will
> > > > record that the wait was unnecessary.
> > >
> > > I am not convinced that unnecessary is the right word. On a workload
> > > without any IO (i.e. no congestion_wait() necessary, ever), I noticed
> > > the VM regressing both in time and in reclaiming the right pages when
> > > simply removing congestion_wait() from the direct reclaim paths (the
> > > one in __alloc_pages_slowpath and the other one in
> > > do_try_to_free_pages).
> > >
> > > So just being stupid and waiting for the timeout in direct reclaim
> > > while kswapd can make progress seemed to do a better job for that
> > > load.
> > >
> > > I can not exactly pinpoint the reason for that behaviour, it would be
> > > nice if somebody had an idea.
> > >
> >
> > There is a possibility that the behaviour in that case was due to flusher
> > threads doing the writes rather than direct reclaim queueing pages for IO
> > in an inefficient manner. So the stall is stupid but happens to work out
> > well because flusher threads get the chance to do work.
>
> If this is the case, we already have queue congested.
Not necessarily. The fact that with the full series we sometimes call
cond_sched() indicating that there was no congestion when congestion_wait()
was called proves that. We might have some IO on the queue but it's not
congested. Also, there is no guarantee that the congested queue is one we
care about. If we are reclaiming main memory and the congested queue is a
USB stick, we do not necessarily need to stall.
> removing
> congestion_wait() might cause regression but either your change or the
> congestion_wait_check() should not have the regression, as we do check
> if the bdi is congested.
>
What congestion_wait_check()? If there is no congestion and no writes,
congestion is the wrong event to sleep on.
--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab
next prev parent reply other threads:[~2010-08-27 9:20 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-26 15:14 [RFC PATCH 0/3] Do not wait the full timeout on congestion_wait when there is no congestion Mel Gorman
2010-08-26 15:14 ` [PATCH 1/3] writeback: Account for time spent congestion_waited Mel Gorman
2010-08-26 17:23 ` Minchan Kim
2010-08-26 18:10 ` Johannes Weiner
2010-08-26 15:14 ` [PATCH 2/3] writeback: Record if the congestion was unnecessary Mel Gorman
2010-08-26 17:35 ` Minchan Kim
2010-08-26 17:41 ` Mel Gorman
2010-08-26 18:29 ` Johannes Weiner
2010-08-26 20:31 ` Mel Gorman
2010-08-27 2:12 ` Shaohua Li
2010-08-27 9:20 ` Mel Gorman [this message]
2010-08-27 8:16 ` Johannes Weiner
2010-08-27 9:24 ` Mel Gorman
2010-08-30 13:19 ` Johannes Weiner
2010-08-31 15:02 ` Mel Gorman
2010-09-02 15:49 ` Johannes Weiner
2010-09-02 18:28 ` Mel Gorman
2010-08-29 16:03 ` Minchan Kim
2010-08-26 15:14 ` [PATCH 3/3] writeback: Do not congestion sleep when there are no congested BDIs Mel Gorman
2010-08-26 17:38 ` Minchan Kim
2010-08-26 17:42 ` Mel Gorman
2010-08-26 18:17 ` Johannes Weiner
2010-08-26 20:23 ` Mel Gorman
2010-08-27 1:11 ` Wu Fengguang
2010-08-27 9:34 ` Mel Gorman
2010-08-27 1:42 ` Wu Fengguang
2010-08-27 9:37 ` Mel Gorman
2010-08-27 5:13 ` Dave Chinner
2010-08-27 9:33 ` Mel Gorman
2010-08-26 17:20 ` [RFC PATCH 0/3] Do not wait the full timeout on congestion_wait when there is no congestion Minchan Kim
2010-08-26 17:31 ` Mel Gorman
2010-08-26 17:50 ` Minchan Kim
2010-08-27 1:21 ` Wu Fengguang
2010-08-27 1:41 ` Minchan Kim
2010-08-27 1:50 ` Wu Fengguang
2010-08-27 2:02 ` Minchan Kim
2010-08-27 4:34 ` Wu Fengguang
2010-08-27 9:38 ` Mel Gorman
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=20100827092003.GA19556@csn.ul.ie \
--to=mel@csn.ul.ie \
--cc=akpm@linux-foundation.org \
--cc=ehrhardt@linux.vnet.ibm.com \
--cc=fengguang.wu@intel.com \
--cc=hannes@cmpxchg.org \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=shaohua.li@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).