From: Johannes Weiner <jweiner@redhat.com>
To: Mel Gorman <mgorman@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Christoph Hellwig <hch@infradead.org>,
Dave Chinner <david@fromorbit.com>,
Wu Fengguang <fengguang.wu@intel.com>, Jan Kara <jack@suse.cz>,
Rik van Riel <riel@redhat.com>,
Minchan Kim <minchan.kim@gmail.com>,
Chris Mason <chris.mason@oracle.com>,
"Theodore Ts'o" <tytso@mit.edu>,
Andreas Dilger <adilger.kernel@dilger.ca>,
xfs@oss.sgi.com, linux-btrfs@vger.kernel.org,
linux-ext4@vger.kernel.org, linux-mm@kvack.org,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [patch 1/4] mm: exclude reserved pages from dirtyable memory
Date: Thu, 22 Sep 2011 11:03:26 +0200 [thread overview]
Message-ID: <20110922090326.GB29046@redhat.com> (raw)
In-Reply-To: <20110921150328.GJ4849@suse.de>
On Wed, Sep 21, 2011 at 04:03:28PM +0100, Mel Gorman wrote:
> On Wed, Sep 21, 2011 at 03:04:23PM +0100, Mel Gorman wrote:
> > On Tue, Sep 20, 2011 at 03:45:12PM +0200, Johannes Weiner wrote:
> > > The amount of dirtyable pages should not include the total number of
> > > free pages: there is a number of reserved pages that the page
> > > allocator and kswapd always try to keep free.
> > >
> > > The closer (reclaimable pages - dirty pages) is to the number of
> > > reserved pages, the more likely it becomes for reclaim to run into
> > > dirty pages:
> > >
> > > +----------+ ---
> > > | anon | |
> > > +----------+ |
> > > | | |
> > > | | -- dirty limit new -- flusher new
> > > | file | | |
> > > | | | |
> > > | | -- dirty limit old -- flusher old
> > > | | |
> > > +----------+ --- reclaim
> > > | reserved |
> > > +----------+
> > > | kernel |
> > > +----------+
> > >
> > > Not treating reserved pages as dirtyable on a global level is only a
> > > conceptual fix. In reality, dirty pages are not distributed equally
> > > across zones and reclaim runs into dirty pages on a regular basis.
> > >
> > > But it is important to get this right before tackling the problem on a
> > > per-zone level, where the distance between reclaim and the dirty pages
> > > is mostly much smaller in absolute numbers.
> > >
> > > Signed-off-by: Johannes Weiner <jweiner@redhat.com>
> > > ---
> > > include/linux/mmzone.h | 1 +
> > > mm/page-writeback.c | 8 +++++---
> > > mm/page_alloc.c | 1 +
> > > 3 files changed, 7 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> > > index 1ed4116..e28f8e0 100644
> > > --- a/include/linux/mmzone.h
> > > +++ b/include/linux/mmzone.h
> > > @@ -316,6 +316,7 @@ struct zone {
> > > * sysctl_lowmem_reserve_ratio sysctl changes.
> > > */
> > > unsigned long lowmem_reserve[MAX_NR_ZONES];
> > > + unsigned long totalreserve_pages;
> > >
> >
> > This is nit-picking but totalreserve_pages is a poor name because it's
> > a per-zone value that is one of the lowmem_reserve[] fields instead
> > of a total. After this patch, we have zone->totalreserve_pages and
> > totalreserve_pages but are not related to the same thing.
> > but they are not the same.
>
> As you correctly pointed out to be on IRC, zone->totalreserve_pages
> is not the lowmem_reserve because it takes the high_wmark into
> account. Sorry about that, I should have kept thinking. The name is
> still poor though because it does not explain what the value is or
> what it means.
>
> zone->FOO value needs to be related to lowmem_reserve because this
> is related to balancing zone usage.
>
> zone->FOO value should also be related to the high_wmark because
> this is avoiding writeback from page reclaim
>
> err....... umm... this?
>
> /*
> * When allocating a new page that is expected to be
> * dirtied soon, the number of free pages and the
> * dirty_balance reserve are taken into account. The
> * objective is that the globally allowed number of dirty
> * pages should be distributed throughout the zones such
> * that it is very unlikely that page reclaim will call
> * ->writepage.
> *
> * dirty_balance_reserve takes both lowmem_reserve and
> * the high watermark into account. The lowmem_reserve
> * is taken into account because we don't want the
> * distribution of dirty pages to unnecessarily increase
> * lowmem pressure. The watermark is taken into account
> * because it's correlated with when kswapd wakes up
> * and how long it stays awake.
> */
> unsigned long dirty_balance_reserve.
Yes, that's much better, thanks.
I assume this is meant the same for both the zone and the global level
and we should not mess with totalreserve_pages in either case?
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <jweiner@redhat.com>
To: Mel Gorman <mgorman@suse.de>
Cc: Rik van Riel <riel@redhat.com>,
linux-ext4@vger.kernel.org, Jan Kara <jack@suse.cz>,
linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org,
xfs@oss.sgi.com, Christoph Hellwig <hch@infradead.org>,
linux-mm@kvack.org, Andreas Dilger <adilger.kernel@dilger.ca>,
Minchan Kim <minchan.kim@gmail.com>,
linux-fsdevel@vger.kernel.org, Theodore Ts'o <tytso@mit.edu>,
Andrew Morton <akpm@linux-foundation.org>,
Wu Fengguang <fengguang.wu@intel.com>,
Chris Mason <chris.mason@oracle.com>
Subject: Re: [patch 1/4] mm: exclude reserved pages from dirtyable memory
Date: Thu, 22 Sep 2011 11:03:26 +0200 [thread overview]
Message-ID: <20110922090326.GB29046@redhat.com> (raw)
In-Reply-To: <20110921150328.GJ4849@suse.de>
On Wed, Sep 21, 2011 at 04:03:28PM +0100, Mel Gorman wrote:
> On Wed, Sep 21, 2011 at 03:04:23PM +0100, Mel Gorman wrote:
> > On Tue, Sep 20, 2011 at 03:45:12PM +0200, Johannes Weiner wrote:
> > > The amount of dirtyable pages should not include the total number of
> > > free pages: there is a number of reserved pages that the page
> > > allocator and kswapd always try to keep free.
> > >
> > > The closer (reclaimable pages - dirty pages) is to the number of
> > > reserved pages, the more likely it becomes for reclaim to run into
> > > dirty pages:
> > >
> > > +----------+ ---
> > > | anon | |
> > > +----------+ |
> > > | | |
> > > | | -- dirty limit new -- flusher new
> > > | file | | |
> > > | | | |
> > > | | -- dirty limit old -- flusher old
> > > | | |
> > > +----------+ --- reclaim
> > > | reserved |
> > > +----------+
> > > | kernel |
> > > +----------+
> > >
> > > Not treating reserved pages as dirtyable on a global level is only a
> > > conceptual fix. In reality, dirty pages are not distributed equally
> > > across zones and reclaim runs into dirty pages on a regular basis.
> > >
> > > But it is important to get this right before tackling the problem on a
> > > per-zone level, where the distance between reclaim and the dirty pages
> > > is mostly much smaller in absolute numbers.
> > >
> > > Signed-off-by: Johannes Weiner <jweiner@redhat.com>
> > > ---
> > > include/linux/mmzone.h | 1 +
> > > mm/page-writeback.c | 8 +++++---
> > > mm/page_alloc.c | 1 +
> > > 3 files changed, 7 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> > > index 1ed4116..e28f8e0 100644
> > > --- a/include/linux/mmzone.h
> > > +++ b/include/linux/mmzone.h
> > > @@ -316,6 +316,7 @@ struct zone {
> > > * sysctl_lowmem_reserve_ratio sysctl changes.
> > > */
> > > unsigned long lowmem_reserve[MAX_NR_ZONES];
> > > + unsigned long totalreserve_pages;
> > >
> >
> > This is nit-picking but totalreserve_pages is a poor name because it's
> > a per-zone value that is one of the lowmem_reserve[] fields instead
> > of a total. After this patch, we have zone->totalreserve_pages and
> > totalreserve_pages but are not related to the same thing.
> > but they are not the same.
>
> As you correctly pointed out to be on IRC, zone->totalreserve_pages
> is not the lowmem_reserve because it takes the high_wmark into
> account. Sorry about that, I should have kept thinking. The name is
> still poor though because it does not explain what the value is or
> what it means.
>
> zone->FOO value needs to be related to lowmem_reserve because this
> is related to balancing zone usage.
>
> zone->FOO value should also be related to the high_wmark because
> this is avoiding writeback from page reclaim
>
> err....... umm... this?
>
> /*
> * When allocating a new page that is expected to be
> * dirtied soon, the number of free pages and the
> * dirty_balance reserve are taken into account. The
> * objective is that the globally allowed number of dirty
> * pages should be distributed throughout the zones such
> * that it is very unlikely that page reclaim will call
> * ->writepage.
> *
> * dirty_balance_reserve takes both lowmem_reserve and
> * the high watermark into account. The lowmem_reserve
> * is taken into account because we don't want the
> * distribution of dirty pages to unnecessarily increase
> * lowmem pressure. The watermark is taken into account
> * because it's correlated with when kswapd wakes up
> * and how long it stays awake.
> */
> unsigned long dirty_balance_reserve.
Yes, that's much better, thanks.
I assume this is meant the same for both the zone and the global level
and we should not mess with totalreserve_pages in either case?
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <jweiner@redhat.com>
To: Mel Gorman <mgorman@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Christoph Hellwig <hch@infradead.org>,
Dave Chinner <david@fromorbit.com>,
Wu Fengguang <fengguang.wu@intel.com>, Jan Kara <jack@suse.cz>,
Rik van Riel <riel@redhat.com>,
Minchan Kim <minchan.kim@gmail.com>,
Chris Mason <chris.mason@oracle.com>,
"Theodore Ts'o" <tytso@mit.edu>,
Andreas Dilger <adilger.kernel@dilger.ca>,
xfs@oss.sgi.com, linux-btrfs@vger.kernel.org,
linux-ext4@vger.kernel.org, linux-mm@kvack.org,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [patch 1/4] mm: exclude reserved pages from dirtyable memory
Date: Thu, 22 Sep 2011 11:03:26 +0200 [thread overview]
Message-ID: <20110922090326.GB29046@redhat.com> (raw)
In-Reply-To: <20110921150328.GJ4849@suse.de>
On Wed, Sep 21, 2011 at 04:03:28PM +0100, Mel Gorman wrote:
> On Wed, Sep 21, 2011 at 03:04:23PM +0100, Mel Gorman wrote:
> > On Tue, Sep 20, 2011 at 03:45:12PM +0200, Johannes Weiner wrote:
> > > The amount of dirtyable pages should not include the total number of
> > > free pages: there is a number of reserved pages that the page
> > > allocator and kswapd always try to keep free.
> > >
> > > The closer (reclaimable pages - dirty pages) is to the number of
> > > reserved pages, the more likely it becomes for reclaim to run into
> > > dirty pages:
> > >
> > > +----------+ ---
> > > | anon | |
> > > +----------+ |
> > > | | |
> > > | | -- dirty limit new -- flusher new
> > > | file | | |
> > > | | | |
> > > | | -- dirty limit old -- flusher old
> > > | | |
> > > +----------+ --- reclaim
> > > | reserved |
> > > +----------+
> > > | kernel |
> > > +----------+
> > >
> > > Not treating reserved pages as dirtyable on a global level is only a
> > > conceptual fix. In reality, dirty pages are not distributed equally
> > > across zones and reclaim runs into dirty pages on a regular basis.
> > >
> > > But it is important to get this right before tackling the problem on a
> > > per-zone level, where the distance between reclaim and the dirty pages
> > > is mostly much smaller in absolute numbers.
> > >
> > > Signed-off-by: Johannes Weiner <jweiner@redhat.com>
> > > ---
> > > include/linux/mmzone.h | 1 +
> > > mm/page-writeback.c | 8 +++++---
> > > mm/page_alloc.c | 1 +
> > > 3 files changed, 7 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> > > index 1ed4116..e28f8e0 100644
> > > --- a/include/linux/mmzone.h
> > > +++ b/include/linux/mmzone.h
> > > @@ -316,6 +316,7 @@ struct zone {
> > > * sysctl_lowmem_reserve_ratio sysctl changes.
> > > */
> > > unsigned long lowmem_reserve[MAX_NR_ZONES];
> > > + unsigned long totalreserve_pages;
> > >
> >
> > This is nit-picking but totalreserve_pages is a poor name because it's
> > a per-zone value that is one of the lowmem_reserve[] fields instead
> > of a total. After this patch, we have zone->totalreserve_pages and
> > totalreserve_pages but are not related to the same thing.
> > but they are not the same.
>
> As you correctly pointed out to be on IRC, zone->totalreserve_pages
> is not the lowmem_reserve because it takes the high_wmark into
> account. Sorry about that, I should have kept thinking. The name is
> still poor though because it does not explain what the value is or
> what it means.
>
> zone->FOO value needs to be related to lowmem_reserve because this
> is related to balancing zone usage.
>
> zone->FOO value should also be related to the high_wmark because
> this is avoiding writeback from page reclaim
>
> err....... umm... this?
>
> /*
> * When allocating a new page that is expected to be
> * dirtied soon, the number of free pages and the
> * dirty_balance reserve are taken into account. The
> * objective is that the globally allowed number of dirty
> * pages should be distributed throughout the zones such
> * that it is very unlikely that page reclaim will call
> * ->writepage.
> *
> * dirty_balance_reserve takes both lowmem_reserve and
> * the high watermark into account. The lowmem_reserve
> * is taken into account because we don't want the
> * distribution of dirty pages to unnecessarily increase
> * lowmem pressure. The watermark is taken into account
> * because it's correlated with when kswapd wakes up
> * and how long it stays awake.
> */
> unsigned long dirty_balance_reserve.
Yes, that's much better, thanks.
I assume this is meant the same for both the zone and the global level
and we should not mess with totalreserve_pages in either case?
next prev parent reply other threads:[~2011-09-22 9:03 UTC|newest]
Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-20 13:45 [patch 0/4] 50% faster writing to your USB drive!* Johannes Weiner
2011-09-20 13:45 ` Johannes Weiner
2011-09-20 13:45 ` Johannes Weiner
2011-09-20 13:45 ` [patch 1/4] mm: exclude reserved pages from dirtyable memory Johannes Weiner
2011-09-20 13:45 ` Johannes Weiner
2011-09-20 13:45 ` Johannes Weiner
2011-09-20 15:21 ` Rik van Riel
2011-09-20 15:21 ` Rik van Riel
2011-09-20 15:21 ` Rik van Riel
2011-09-21 14:04 ` Mel Gorman
2011-09-21 14:04 ` Mel Gorman
2011-09-21 14:04 ` Mel Gorman
2011-09-21 15:03 ` Mel Gorman
2011-09-21 15:03 ` Mel Gorman
2011-09-21 15:03 ` Mel Gorman
2011-09-22 9:03 ` Johannes Weiner [this message]
2011-09-22 9:03 ` Johannes Weiner
2011-09-22 9:03 ` Johannes Weiner
2011-09-22 10:54 ` Mel Gorman
2011-09-22 10:54 ` Mel Gorman
2011-09-22 10:54 ` Mel Gorman
2011-09-23 14:38 ` [patch 1/4 v2] " Johannes Weiner
2011-09-23 14:38 ` Johannes Weiner
2011-09-23 14:38 ` Johannes Weiner
2011-09-28 4:55 ` Minchan Kim
2011-09-28 4:55 ` Minchan Kim
2011-09-28 4:55 ` Minchan Kim
2011-09-28 7:50 ` Johannes Weiner
2011-09-28 7:50 ` Johannes Weiner
2011-09-28 7:50 ` Johannes Weiner
2011-09-28 18:35 ` Minchan Kim
2011-09-28 18:35 ` Minchan Kim
2011-09-28 18:35 ` Minchan Kim
2011-09-20 13:45 ` [patch 2/4] mm: writeback: distribute write pages across allowable zones Johannes Weiner
2011-09-20 13:45 ` Johannes Weiner
2011-09-20 13:45 ` Johannes Weiner
2011-09-20 18:36 ` Rik van Riel
2011-09-20 18:36 ` Rik van Riel
2011-09-20 18:36 ` Rik van Riel
2011-09-21 11:04 ` Shaohua Li
2011-09-21 11:04 ` Shaohua Li
2011-09-21 11:04 ` Shaohua Li
2011-09-21 13:35 ` Johannes Weiner
2011-09-21 13:35 ` Johannes Weiner
2011-09-21 13:35 ` Johannes Weiner
2011-09-21 14:30 ` Mel Gorman
2011-09-21 14:30 ` Mel Gorman
2011-09-21 14:30 ` Mel Gorman
2011-09-21 23:02 ` Andrew Morton
2011-09-21 23:02 ` Andrew Morton
2011-09-21 23:02 ` Andrew Morton
2011-09-22 8:52 ` Johannes Weiner
2011-09-22 8:52 ` Johannes Weiner
2011-09-22 8:52 ` Johannes Weiner
2011-09-23 14:41 ` [patch 1/2/4] mm: writeback: cleanups in preparation for per-zone dirty limits Johannes Weiner
2011-09-23 14:41 ` Johannes Weiner
2011-09-23 14:41 ` Johannes Weiner
2011-09-28 5:57 ` Minchan Kim
2011-09-28 5:57 ` Minchan Kim
2011-09-28 5:57 ` Minchan Kim
2011-09-28 9:27 ` Mel Gorman
2011-09-28 9:27 ` Mel Gorman
2011-09-28 9:27 ` Mel Gorman
2011-09-23 14:42 ` [patch 2/2/4] mm: try to distribute dirty pages fairly across zones Johannes Weiner
2011-09-23 14:42 ` Johannes Weiner
2011-09-23 14:42 ` Johannes Weiner
2011-09-28 5:56 ` Minchan Kim
2011-09-28 5:56 ` Minchan Kim
2011-09-28 5:56 ` Minchan Kim
2011-09-28 7:11 ` Johannes Weiner
2011-09-28 7:11 ` Johannes Weiner
2011-09-28 7:11 ` Johannes Weiner
2011-09-28 18:09 ` Minchan Kim
2011-09-28 18:09 ` Minchan Kim
2011-09-28 18:09 ` Minchan Kim
2011-09-28 9:36 ` Mel Gorman
2011-09-28 9:36 ` Mel Gorman
2011-09-28 9:36 ` Mel Gorman
2011-09-20 13:45 ` [patch 3/4] mm: filemap: pass __GFP_WRITE from grab_cache_page_write_begin() Johannes Weiner
2011-09-20 13:45 ` Johannes Weiner
2011-09-20 13:45 ` Johannes Weiner
2011-09-20 14:25 ` Christoph Hellwig
2011-09-20 14:25 ` Christoph Hellwig
2011-09-20 14:25 ` Christoph Hellwig
2011-09-20 18:38 ` Rik van Riel
2011-09-20 18:38 ` Rik van Riel
2011-09-20 18:38 ` Rik van Riel
2011-09-20 18:40 ` Christoph Hellwig
2011-09-20 18:40 ` Christoph Hellwig
2011-09-20 18:40 ` Christoph Hellwig
2011-09-21 14:09 ` Johannes Weiner
2011-09-21 14:09 ` Johannes Weiner
2011-09-21 14:09 ` Johannes Weiner
2011-09-20 18:40 ` Rik van Riel
2011-09-20 18:40 ` Rik van Riel
2011-09-20 18:40 ` Rik van Riel
2011-09-21 14:34 ` Mel Gorman
2011-09-21 14:34 ` Mel Gorman
2011-09-21 14:34 ` Mel Gorman
2011-09-28 6:02 ` Minchan Kim
2011-09-28 6:02 ` Minchan Kim
2011-09-28 6:02 ` Minchan Kim
2011-09-20 13:45 ` [patch 4/4] Btrfs: pass __GFP_WRITE for buffered write page allocations Johannes Weiner
2011-09-20 13:45 ` Johannes Weiner
2011-09-20 13:45 ` Johannes Weiner
2011-09-20 13:56 ` Johannes Weiner
2011-09-20 13:56 ` Johannes Weiner
2011-09-20 13:56 ` Johannes Weiner
2011-09-20 14:09 ` Josef Bacik
2011-09-20 14:09 ` Josef Bacik
2011-09-20 14:09 ` Josef Bacik
2011-09-20 14:14 ` Johannes Weiner
2011-09-20 14:14 ` Johannes Weiner
2011-09-20 14:14 ` Johannes Weiner
2011-09-20 18:41 ` Rik van Riel
2011-09-20 18:41 ` Rik van Riel
2011-09-20 18:41 ` Rik van Riel
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=20110922090326.GB29046@redhat.com \
--to=jweiner@redhat.com \
--cc=adilger.kernel@dilger.ca \
--cc=akpm@linux-foundation.org \
--cc=chris.mason@oracle.com \
--cc=david@fromorbit.com \
--cc=fengguang.wu@intel.com \
--cc=hch@infradead.org \
--cc=jack@suse.cz \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=minchan.kim@gmail.com \
--cc=riel@redhat.com \
--cc=tytso@mit.edu \
--cc=xfs@oss.sgi.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.