From: Mel Gorman <mel@csn.ul.ie>
To: Wu Fengguang <fengguang.wu@intel.com>
Cc: linux-mm <linux-mm@kvack.org>,
LKML <linux-kernel@vger.kernel.org>, Jan Kara <jack@suse.cz>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Andrew Morton <akpm@linux-foundation.org>,
"Theodore Ts'o" <tytso@mit.edu>,
Dave Chinner <david@fromorbit.com>,
Rik van Riel <riel@redhat.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Chris Mason <chris.mason@oracle.com>,
Christoph Hellwig <hch@lst.de>, Li Shaohua <shaohua.li@intel.com>
Subject: Re: [PATCH 01/17] writeback: remove the internal 5% low bound on dirty_ratio
Date: Mon, 13 Sep 2010 10:51:30 +0100 [thread overview]
Message-ID: <20100913095130.GD23508@csn.ul.ie> (raw)
In-Reply-To: <20100912155202.733389420@intel.com>
On Sun, Sep 12, 2010 at 11:49:46PM +0800, Wu Fengguang wrote:
> The dirty_ratio was siliently limited in global_dirty_limits() to >= 5%.
> This is not a user expected behavior. And it's inconsistent with
> calc_period_shift(), which uses the plain vm_dirty_ratio value.
>
> Let's rip the arbitrary internal bound. It may impact some very weird
> user space applications. However we are going to dynamicly sizing the
> dirty limits anyway, which may well break such applications, too.
>
> At the same time, fix balance_dirty_pages() to work with the
> dirty_thresh=0 case. This allows applications to proceed when
> dirty+writeback pages are all cleaned.
>
> And ">" fits with the name "exceeded" better than ">=" does. Neil
> think it is an aesthetic improvement as well as a functional one :)
>
> CC: Jan Kara <jack@suse.cz>
> Proposed-by: Con Kolivas <kernel@kolivas.org>
> Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Reviewed-by: Rik van Riel <riel@redhat.com>
> Reviewed-by: Neil Brown <neilb@suse.de>
> Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> ---
> fs/fs-writeback.c | 2 +-
> mm/page-writeback.c | 16 +++++-----------
> 2 files changed, 6 insertions(+), 12 deletions(-)
>
> --- linux-next.orig/mm/page-writeback.c 2010-08-29 08:10:30.000000000 +0800
> +++ linux-next/mm/page-writeback.c 2010-08-29 08:12:08.000000000 +0800
> @@ -415,14 +415,8 @@ void global_dirty_limits(unsigned long *
>
> if (vm_dirty_bytes)
> dirty = DIV_ROUND_UP(vm_dirty_bytes, PAGE_SIZE);
> - else {
> - int dirty_ratio;
> -
> - dirty_ratio = vm_dirty_ratio;
> - if (dirty_ratio < 5)
> - dirty_ratio = 5;
> - dirty = (dirty_ratio * available_memory) / 100;
> - }
> + else
> + dirty = (vm_dirty_ratio * available_memory) / 100;
>
What kernel is this? In a recent mainline kernel and on linux-next, this
is
dirty = (dirty_ratio * available_memory) / 100;
i.e. * instead of +. With +, the value for dirty is almost always going
to be simply 1%.
> if (dirty_background_bytes)
> background = DIV_ROUND_UP(dirty_background_bytes, PAGE_SIZE);
> @@ -510,7 +504,7 @@ static void balance_dirty_pages(struct a
> * catch-up. This avoids (excessively) small writeouts
> * when the bdi limits are ramping up.
> */
> - if (nr_reclaimable + nr_writeback <
> + if (nr_reclaimable + nr_writeback <=
> (background_thresh + dirty_thresh) / 2)
> break;
>
> @@ -542,8 +536,8 @@ static void balance_dirty_pages(struct a
> * the last resort safeguard.
> */
> dirty_exceeded =
> - (bdi_nr_reclaimable + bdi_nr_writeback >= bdi_thresh)
> - || (nr_reclaimable + nr_writeback >= dirty_thresh);
> + (bdi_nr_reclaimable + bdi_nr_writeback > bdi_thresh)
> + || (nr_reclaimable + nr_writeback > dirty_thresh);
>
> if (!dirty_exceeded)
> break;
> --- linux-next.orig/fs/fs-writeback.c 2010-08-29 08:12:51.000000000 +0800
> +++ linux-next/fs/fs-writeback.c 2010-08-29 08:12:53.000000000 +0800
> @@ -574,7 +574,7 @@ static inline bool over_bground_thresh(v
> global_dirty_limits(&background_thresh, &dirty_thresh);
>
> return (global_page_state(NR_FILE_DIRTY) +
> - global_page_state(NR_UNSTABLE_NFS) >= background_thresh);
> + global_page_state(NR_UNSTABLE_NFS) > background_thresh);
> }
>
> /*
>
>
--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab
WARNING: multiple messages have this Message-ID (diff)
From: Mel Gorman <mel@csn.ul.ie>
To: Wu Fengguang <fengguang.wu@intel.com>
Cc: linux-mm <linux-mm@kvack.org>,
LKML <linux-kernel@vger.kernel.org>, Jan Kara <jack@suse.cz>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Andrew Morton <akpm@linux-foundation.org>,
Theodore Ts'o <tytso@mit.edu>, Dave Chinner <david@fromorbit.com>,
Rik van Riel <riel@redhat.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Chris Mason <chris.mason@oracle.com>,
Christoph Hellwig <hch@lst.de>, Li Shaohua <shaohua.li@intel.com>
Subject: Re: [PATCH 01/17] writeback: remove the internal 5% low bound on dirty_ratio
Date: Mon, 13 Sep 2010 10:51:30 +0100 [thread overview]
Message-ID: <20100913095130.GD23508@csn.ul.ie> (raw)
In-Reply-To: <20100912155202.733389420@intel.com>
On Sun, Sep 12, 2010 at 11:49:46PM +0800, Wu Fengguang wrote:
> The dirty_ratio was siliently limited in global_dirty_limits() to >= 5%.
> This is not a user expected behavior. And it's inconsistent with
> calc_period_shift(), which uses the plain vm_dirty_ratio value.
>
> Let's rip the arbitrary internal bound. It may impact some very weird
> user space applications. However we are going to dynamicly sizing the
> dirty limits anyway, which may well break such applications, too.
>
> At the same time, fix balance_dirty_pages() to work with the
> dirty_thresh=0 case. This allows applications to proceed when
> dirty+writeback pages are all cleaned.
>
> And ">" fits with the name "exceeded" better than ">=" does. Neil
> think it is an aesthetic improvement as well as a functional one :)
>
> CC: Jan Kara <jack@suse.cz>
> Proposed-by: Con Kolivas <kernel@kolivas.org>
> Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Reviewed-by: Rik van Riel <riel@redhat.com>
> Reviewed-by: Neil Brown <neilb@suse.de>
> Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> ---
> fs/fs-writeback.c | 2 +-
> mm/page-writeback.c | 16 +++++-----------
> 2 files changed, 6 insertions(+), 12 deletions(-)
>
> --- linux-next.orig/mm/page-writeback.c 2010-08-29 08:10:30.000000000 +0800
> +++ linux-next/mm/page-writeback.c 2010-08-29 08:12:08.000000000 +0800
> @@ -415,14 +415,8 @@ void global_dirty_limits(unsigned long *
>
> if (vm_dirty_bytes)
> dirty = DIV_ROUND_UP(vm_dirty_bytes, PAGE_SIZE);
> - else {
> - int dirty_ratio;
> -
> - dirty_ratio = vm_dirty_ratio;
> - if (dirty_ratio < 5)
> - dirty_ratio = 5;
> - dirty = (dirty_ratio * available_memory) / 100;
> - }
> + else
> + dirty = (vm_dirty_ratio * available_memory) / 100;
>
What kernel is this? In a recent mainline kernel and on linux-next, this
is
dirty = (dirty_ratio * available_memory) / 100;
i.e. * instead of +. With +, the value for dirty is almost always going
to be simply 1%.
> if (dirty_background_bytes)
> background = DIV_ROUND_UP(dirty_background_bytes, PAGE_SIZE);
> @@ -510,7 +504,7 @@ static void balance_dirty_pages(struct a
> * catch-up. This avoids (excessively) small writeouts
> * when the bdi limits are ramping up.
> */
> - if (nr_reclaimable + nr_writeback <
> + if (nr_reclaimable + nr_writeback <=
> (background_thresh + dirty_thresh) / 2)
> break;
>
> @@ -542,8 +536,8 @@ static void balance_dirty_pages(struct a
> * the last resort safeguard.
> */
> dirty_exceeded =
> - (bdi_nr_reclaimable + bdi_nr_writeback >= bdi_thresh)
> - || (nr_reclaimable + nr_writeback >= dirty_thresh);
> + (bdi_nr_reclaimable + bdi_nr_writeback > bdi_thresh)
> + || (nr_reclaimable + nr_writeback > dirty_thresh);
>
> if (!dirty_exceeded)
> break;
> --- linux-next.orig/fs/fs-writeback.c 2010-08-29 08:12:51.000000000 +0800
> +++ linux-next/fs/fs-writeback.c 2010-08-29 08:12:53.000000000 +0800
> @@ -574,7 +574,7 @@ static inline bool over_bground_thresh(v
> global_dirty_limits(&background_thresh, &dirty_thresh);
>
> return (global_page_state(NR_FILE_DIRTY) +
> - global_page_state(NR_UNSTABLE_NFS) >= background_thresh);
> + global_page_state(NR_UNSTABLE_NFS) > background_thresh);
> }
>
> /*
>
>
--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab
--
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/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-09-13 9:51 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-12 15:49 [PATCH 00/17] [RFC] soft and dynamic dirty throttling limits Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-12 15:49 ` [PATCH 01/17] writeback: remove the internal 5% low bound on dirty_ratio Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-13 9:23 ` Johannes Weiner
2010-09-13 9:23 ` Johannes Weiner
2010-09-13 9:51 ` Mel Gorman [this message]
2010-09-13 9:51 ` Mel Gorman
2010-09-13 9:57 ` Wu Fengguang
2010-09-13 9:57 ` Wu Fengguang
2010-09-13 10:10 ` Mel Gorman
2010-09-13 10:10 ` Mel Gorman
2010-09-12 15:49 ` [PATCH 02/17] writeback: IO-less balance_dirty_pages() Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-13 8:45 ` Dave Chinner
2010-09-13 8:45 ` Dave Chinner
2010-09-13 11:38 ` Wu Fengguang
2010-09-13 11:38 ` Wu Fengguang
2010-09-12 15:49 ` [PATCH 03/17] writeback: per-task rate limit to balance_dirty_pages() Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-12 15:49 ` [PATCH 04/17] writeback: quit throttling when bdi dirty/writeback pages go down Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-12 15:49 ` [PATCH 05/17] writeback: quit throttling when signal pending Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-12 20:46 ` Neil Brown
2010-09-12 20:46 ` Neil Brown
2010-09-13 1:55 ` Wu Fengguang
2010-09-13 1:55 ` Wu Fengguang
2010-09-13 3:21 ` Neil Brown
2010-09-13 3:21 ` Neil Brown
2010-09-13 3:48 ` Wu Fengguang
2010-09-13 3:48 ` Wu Fengguang
2010-09-14 8:23 ` KOSAKI Motohiro
2010-09-14 8:23 ` KOSAKI Motohiro
2010-09-14 8:33 ` Wu Fengguang
2010-09-14 8:33 ` Wu Fengguang
2010-09-14 8:44 ` KOSAKI Motohiro
2010-09-14 8:44 ` KOSAKI Motohiro
2010-09-14 9:17 ` Wu Fengguang
2010-09-14 9:17 ` Wu Fengguang
2010-09-14 9:25 ` KOSAKI Motohiro
2010-09-14 9:25 ` KOSAKI Motohiro
2010-09-12 15:49 ` [PATCH 06/17] writeback: move task dirty fraction to balance_dirty_pages() Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-12 15:49 ` [PATCH 07/17] writeback: add trace event for balance_dirty_pages() Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-12 15:49 ` [PATCH 08/17] writeback: account per-bdi accumulated written pages Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-12 15:59 ` Wu Fengguang
2010-09-12 15:59 ` Wu Fengguang
2010-09-14 8:32 ` KOSAKI Motohiro
2010-09-14 8:32 ` KOSAKI Motohiro
2010-09-12 15:49 ` [PATCH 09/17] writeback: bdi write bandwidth estimation Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-12 15:49 ` [PATCH 10/17] writeback: show bdi write bandwidth in debugfs Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-12 15:49 ` [PATCH 11/17] writeback: make nr_to_write a per-file limit Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-12 15:49 ` [PATCH 12/17] writeback: scale IO chunk size up to device bandwidth Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-12 15:49 ` [PATCH 13/17] writeback: reduce per-bdi dirty threshold ramp up time Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-12 16:15 ` Wu Fengguang
2010-09-12 16:15 ` Wu Fengguang
2010-09-12 15:49 ` [PATCH 14/17] vmscan: add scan_control.priority Wu Fengguang
2010-09-12 15:49 ` Wu Fengguang
2010-09-12 15:50 ` [PATCH 15/17] mm: lower soft dirty limits on memory pressure Wu Fengguang
2010-09-12 15:50 ` Wu Fengguang
2010-09-13 9:40 ` Wu Fengguang
2010-09-13 9:40 ` Wu Fengguang
2010-09-12 15:50 ` [PATCH 16/17] mm: create /vm/dirty_pressure in debugfs Wu Fengguang
2010-09-12 15:50 ` Wu Fengguang
2010-09-12 15:50 ` [PATCH 17/17] writeback: consolidate balance_dirty_pages() variable names Wu Fengguang
2010-09-12 15:50 ` Wu Fengguang
2010-10-12 14:17 ` [PATCH 00/17] [RFC] soft and dynamic dirty throttling limits Christoph Hellwig
2010-10-12 14:17 ` Christoph Hellwig
2010-10-13 3:07 ` Dave Chinner
2010-10-13 3:07 ` Dave Chinner
2010-10-13 3:23 ` Wu Fengguang
2010-10-13 3:23 ` Wu Fengguang
2010-10-13 8:26 ` Wu Fengguang
2010-10-13 8:26 ` Wu Fengguang
2010-10-13 9:26 ` Dave Chinner
2010-10-13 9:26 ` Dave Chinner
2010-11-01 6:24 ` Dave Chinner
2010-11-01 6:24 ` Dave Chinner
2010-11-04 3:41 ` Wu Fengguang
2010-11-04 3:41 ` Wu Fengguang
2010-11-04 12:48 ` Dave Chinner
2010-11-04 12:48 ` Dave Chinner
2010-11-04 13:12 ` Christoph Hellwig
2010-11-04 13:12 ` Christoph Hellwig
2010-11-05 14:56 ` Wu Fengguang
2010-11-05 14:56 ` Wu Fengguang
2010-11-06 10:42 ` Dave Chinner
2010-11-06 10:42 ` Dave Chinner
2010-10-14 13:12 ` Wu Fengguang
2010-10-14 13:12 ` 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=20100913095130.GD23508@csn.ul.ie \
--to=mel@csn.ul.ie \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=chris.mason@oracle.com \
--cc=david@fromorbit.com \
--cc=fengguang.wu@intel.com \
--cc=hch@lst.de \
--cc=jack@suse.cz \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=riel@redhat.com \
--cc=shaohua.li@intel.com \
--cc=tytso@mit.edu \
/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.