All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-20  3:25 ` Wu Fengguang
  0 siblings, 0 replies; 33+ messages in thread
From: Wu Fengguang @ 2010-08-20  3:25 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kernel, linux-fsdevel, linux-mm, riel, david, hch, axboe,
	Michael Rubin, Jan Kara, Neil Brown

The dirty_ratio was silently limited to >= 5%. This is not a user
expected behavior. Let's rip it.

It's not likely the user space will depend on the old behavior.
So the risk of breaking user space is very low.

CC: Jan Kara <jack@suse.cz>
CC: Neil Brown <neilb@suse.de>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
 mm/page-writeback.c |   10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

--- linux-next.orig/mm/page-writeback.c	2010-08-20 10:55:17.000000000 +0800
+++ linux-next/mm/page-writeback.c	2010-08-20 10:56:36.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;
 
 	if (dirty_background_bytes)
 		background = DIV_ROUND_UP(dirty_background_bytes, PAGE_SIZE);

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-20  3:25 ` Wu Fengguang
  0 siblings, 0 replies; 33+ messages in thread
From: Wu Fengguang @ 2010-08-20  3:25 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kernel, linux-fsdevel, linux-mm, riel, david, hch, axboe,
	Michael Rubin, Jan Kara, Neil Brown

The dirty_ratio was silently limited to >= 5%. This is not a user
expected behavior. Let's rip it.

It's not likely the user space will depend on the old behavior.
So the risk of breaking user space is very low.

CC: Jan Kara <jack@suse.cz>
CC: Neil Brown <neilb@suse.de>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
 mm/page-writeback.c |   10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

--- linux-next.orig/mm/page-writeback.c	2010-08-20 10:55:17.000000000 +0800
+++ linux-next/mm/page-writeback.c	2010-08-20 10:56:36.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;
 
 	if (dirty_background_bytes)
 		background = DIV_ROUND_UP(dirty_background_bytes, PAGE_SIZE);

--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
  2010-08-20  3:25 ` Wu Fengguang
@ 2010-08-20  3:46   ` Rik van Riel
  -1 siblings, 0 replies; 33+ messages in thread
From: Rik van Riel @ 2010-08-20  3:46 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: Andrew Morton, linux-kernel, linux-fsdevel, linux-mm, david, hch,
	axboe, Michael Rubin, Jan Kara, Neil Brown

On 08/19/2010 11:25 PM, Wu Fengguang wrote:
> The dirty_ratio was silently limited to>= 5%. This is not a user
> expected behavior. Let's rip it.
>
> It's not likely the user space will depend on the old behavior.
> So the risk of breaking user space is very low.
>
> CC: Jan Kara<jack@suse.cz>
> CC: Neil Brown<neilb@suse.de>
> Signed-off-by: Wu Fengguang<fengguang.wu@intel.com>

Acked-by: Rik van Riel <riel@redhat.com>

-- 
All rights reversed

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-20  3:46   ` Rik van Riel
  0 siblings, 0 replies; 33+ messages in thread
From: Rik van Riel @ 2010-08-20  3:46 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: Andrew Morton, linux-kernel, linux-fsdevel, linux-mm, david, hch,
	axboe, Michael Rubin, Jan Kara, Neil Brown

On 08/19/2010 11:25 PM, Wu Fengguang wrote:
> The dirty_ratio was silently limited to>= 5%. This is not a user
> expected behavior. Let's rip it.
>
> It's not likely the user space will depend on the old behavior.
> So the risk of breaking user space is very low.
>
> CC: Jan Kara<jack@suse.cz>
> CC: Neil Brown<neilb@suse.de>
> Signed-off-by: Wu Fengguang<fengguang.wu@intel.com>

Acked-by: Rik van Riel <riel@redhat.com>

-- 
All rights reversed

--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
  2010-08-20  3:25 ` Wu Fengguang
@ 2010-08-20  4:13   ` KOSAKI Motohiro
  -1 siblings, 0 replies; 33+ messages in thread
From: KOSAKI Motohiro @ 2010-08-20  4:13 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: kosaki.motohiro, Andrew Morton, linux-kernel, linux-fsdevel,
	linux-mm, riel, david, hch, axboe, Michael Rubin, Jan Kara,
	Neil Brown

> The dirty_ratio was silently limited to >= 5%. This is not a user
> expected behavior. Let's rip it.
> 
> It's not likely the user space will depend on the old behavior.
> So the risk of breaking user space is very low.
> 
> CC: Jan Kara <jack@suse.cz>
> CC: Neil Brown <neilb@suse.de>
> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>

Thank you.
	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>




^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-20  4:13   ` KOSAKI Motohiro
  0 siblings, 0 replies; 33+ messages in thread
From: KOSAKI Motohiro @ 2010-08-20  4:13 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: kosaki.motohiro, Andrew Morton, linux-kernel, linux-fsdevel,
	linux-mm, riel, david, hch, axboe, Michael Rubin, Jan Kara,
	Neil Brown

> The dirty_ratio was silently limited to >= 5%. This is not a user
> expected behavior. Let's rip it.
> 
> It's not likely the user space will depend on the old behavior.
> So the risk of breaking user space is very low.
> 
> CC: Jan Kara <jack@suse.cz>
> CC: Neil Brown <neilb@suse.de>
> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>

Thank you.
	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>



--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
  2010-08-20  4:13   ` KOSAKI Motohiro
@ 2010-08-20  5:50     ` Con Kolivas
  -1 siblings, 0 replies; 33+ messages in thread
From: Con Kolivas @ 2010-08-20  5:50 UTC (permalink / raw)
  To: KOSAKI Motohiro
  Cc: Wu Fengguang, Andrew Morton, linux-kernel, linux-fsdevel,
	linux-mm, riel, david, hch, axboe

On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > The dirty_ratio was silently limited to >= 5%. This is not a user
> > expected behavior. Let's rip it.
> >
> > It's not likely the user space will depend on the old behavior.
> > So the risk of breaking user space is very low.
> >
> > CC: Jan Kara <jack@suse.cz>
> > CC: Neil Brown <neilb@suse.de>
> > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
>
> Thank you.
> 	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>

I have tried to do this in the past, and setting this value to 0 on some 
machines caused the machine to come to a complete standstill with small 
writes to disk. It seemed there was some kind of "minimum" amount of data 
required by the VM before anything would make it to the disk and I never 
quite found out where that blockade occurred. This was some time ago (3 years 
ago) so I'm not sure if the problem has since been fixed in the VM since 
then. I suggest you do some testing with this value set to zero before 
approving this change.

Regards,
--
-ck

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-20  5:50     ` Con Kolivas
  0 siblings, 0 replies; 33+ messages in thread
From: Con Kolivas @ 2010-08-20  5:50 UTC (permalink / raw)
  To: KOSAKI Motohiro
  Cc: Wu Fengguang, Andrew Morton, linux-kernel, linux-fsdevel,
	linux-mm, riel, david, hch, axboe

On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > The dirty_ratio was silently limited to >= 5%. This is not a user
> > expected behavior. Let's rip it.
> >
> > It's not likely the user space will depend on the old behavior.
> > So the risk of breaking user space is very low.
> >
> > CC: Jan Kara <jack@suse.cz>
> > CC: Neil Brown <neilb@suse.de>
> > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
>
> Thank you.
> 	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>

I have tried to do this in the past, and setting this value to 0 on some 
machines caused the machine to come to a complete standstill with small 
writes to disk. It seemed there was some kind of "minimum" amount of data 
required by the VM before anything would make it to the disk and I never 
quite found out where that blockade occurred. This was some time ago (3 years 
ago) so I'm not sure if the problem has since been fixed in the VM since 
then. I suggest you do some testing with this value set to zero before 
approving this change.

Regards,
--
-ck

--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
  2010-08-20  5:50     ` Con Kolivas
@ 2010-08-20  5:56       ` Wu Fengguang
  -1 siblings, 0 replies; 33+ messages in thread
From: Wu Fengguang @ 2010-08-20  5:56 UTC (permalink / raw)
  To: Con Kolivas
  Cc: KOSAKI Motohiro, Andrew Morton, linux-kernel, linux-fsdevel,
	linux-mm, riel, david, hch, axboe

On Fri, Aug 20, 2010 at 01:50:54PM +0800, Con Kolivas wrote:
> On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > > The dirty_ratio was silently limited to >= 5%. This is not a user
> > > expected behavior. Let's rip it.
> > >
> > > It's not likely the user space will depend on the old behavior.
> > > So the risk of breaking user space is very low.
> > >
> > > CC: Jan Kara <jack@suse.cz>
> > > CC: Neil Brown <neilb@suse.de>
> > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> >
> > Thank you.
> > 	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> 
> I have tried to do this in the past, and setting this value to 0 on some 
> machines caused the machine to come to a complete standstill with small 
> writes to disk. It seemed there was some kind of "minimum" amount of data 
> required by the VM before anything would make it to the disk and I never 
> quite found out where that blockade occurred. This was some time ago (3 years 
> ago) so I'm not sure if the problem has since been fixed in the VM since 
> then. I suggest you do some testing with this value set to zero before 
> approving this change.

Good point. I'll do more homework. Thanks for the reminding!

Thanks,
Fengguang

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-20  5:56       ` Wu Fengguang
  0 siblings, 0 replies; 33+ messages in thread
From: Wu Fengguang @ 2010-08-20  5:56 UTC (permalink / raw)
  To: Con Kolivas
  Cc: KOSAKI Motohiro, Andrew Morton, linux-kernel, linux-fsdevel,
	linux-mm, riel, david, hch, axboe

On Fri, Aug 20, 2010 at 01:50:54PM +0800, Con Kolivas wrote:
> On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > > The dirty_ratio was silently limited to >= 5%. This is not a user
> > > expected behavior. Let's rip it.
> > >
> > > It's not likely the user space will depend on the old behavior.
> > > So the risk of breaking user space is very low.
> > >
> > > CC: Jan Kara <jack@suse.cz>
> > > CC: Neil Brown <neilb@suse.de>
> > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> >
> > Thank you.
> > 	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> 
> I have tried to do this in the past, and setting this value to 0 on some 
> machines caused the machine to come to a complete standstill with small 
> writes to disk. It seemed there was some kind of "minimum" amount of data 
> required by the VM before anything would make it to the disk and I never 
> quite found out where that blockade occurred. This was some time ago (3 years 
> ago) so I'm not sure if the problem has since been fixed in the VM since 
> then. I suggest you do some testing with this value set to zero before 
> approving this change.

Good point. I'll do more homework. Thanks for the reminding!

Thanks,
Fengguang

--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
  2010-08-20  5:50     ` Con Kolivas
@ 2010-08-23  4:42       ` Neil Brown
  -1 siblings, 0 replies; 33+ messages in thread
From: Neil Brown @ 2010-08-23  4:42 UTC (permalink / raw)
  To: Con Kolivas
  Cc: KOSAKI Motohiro, Wu Fengguang, Andrew Morton, linux-kernel,
	linux-fsdevel, linux-mm, riel, david, hch, axboe

On Fri, 20 Aug 2010 15:50:54 +1000
Con Kolivas <kernel@kolivas.org> wrote:

> On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > > The dirty_ratio was silently limited to >= 5%. This is not a user
> > > expected behavior. Let's rip it.
> > >
> > > It's not likely the user space will depend on the old behavior.
> > > So the risk of breaking user space is very low.
> > >
> > > CC: Jan Kara <jack@suse.cz>
> > > CC: Neil Brown <neilb@suse.de>
> > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> >
> > Thank you.
> > 	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> 
> I have tried to do this in the past, and setting this value to 0 on some 
> machines caused the machine to come to a complete standstill with small 
> writes to disk. It seemed there was some kind of "minimum" amount of data 
> required by the VM before anything would make it to the disk and I never 
> quite found out where that blockade occurred. This was some time ago (3 years 
> ago) so I'm not sure if the problem has since been fixed in the VM since 
> then. I suggest you do some testing with this value set to zero before 
> approving this change.
> 

 If it is appropriate to have a lower limit, that should be imposed where
 the sysctl is defined in kernel/sysctl.c, not imposed after the fact where
 the value is used.

 As we now have dirty_bytes which over-rides dirty_ratio, there is little
 cost in having a lower_limit for dirty_ratio - it could even stay at 5% -
 but it really shouldn't be silent.  Writing a number below the limit to the
 sysctl file should fail.

NeilBrown

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-23  4:42       ` Neil Brown
  0 siblings, 0 replies; 33+ messages in thread
From: Neil Brown @ 2010-08-23  4:42 UTC (permalink / raw)
  To: Con Kolivas
  Cc: KOSAKI Motohiro, Wu Fengguang, Andrew Morton, linux-kernel,
	linux-fsdevel, linux-mm, riel, david, hch, axboe

On Fri, 20 Aug 2010 15:50:54 +1000
Con Kolivas <kernel@kolivas.org> wrote:

> On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > > The dirty_ratio was silently limited to >= 5%. This is not a user
> > > expected behavior. Let's rip it.
> > >
> > > It's not likely the user space will depend on the old behavior.
> > > So the risk of breaking user space is very low.
> > >
> > > CC: Jan Kara <jack@suse.cz>
> > > CC: Neil Brown <neilb@suse.de>
> > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> >
> > Thank you.
> > 	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> 
> I have tried to do this in the past, and setting this value to 0 on some 
> machines caused the machine to come to a complete standstill with small 
> writes to disk. It seemed there was some kind of "minimum" amount of data 
> required by the VM before anything would make it to the disk and I never 
> quite found out where that blockade occurred. This was some time ago (3 years 
> ago) so I'm not sure if the problem has since been fixed in the VM since 
> then. I suggest you do some testing with this value set to zero before 
> approving this change.
> 

 If it is appropriate to have a lower limit, that should be imposed where
 the sysctl is defined in kernel/sysctl.c, not imposed after the fact where
 the value is used.

 As we now have dirty_bytes which over-rides dirty_ratio, there is little
 cost in having a lower_limit for dirty_ratio - it could even stay at 5% -
 but it really shouldn't be silent.  Writing a number below the limit to the
 sysctl file should fail.

NeilBrown

--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
  2010-08-23  4:42       ` Neil Brown
@ 2010-08-23  6:23         ` Wu Fengguang
  -1 siblings, 0 replies; 33+ messages in thread
From: Wu Fengguang @ 2010-08-23  6:23 UTC (permalink / raw)
  To: Neil Brown
  Cc: Con Kolivas, KOSAKI Motohiro, Andrew Morton, linux-kernel,
	linux-fsdevel, linux-mm, riel, david, hch, axboe

On Mon, Aug 23, 2010 at 12:42:48PM +0800, Neil Brown wrote:
> On Fri, 20 Aug 2010 15:50:54 +1000
> Con Kolivas <kernel@kolivas.org> wrote:
> 
> > On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > > > The dirty_ratio was silently limited to >= 5%. This is not a user
> > > > expected behavior. Let's rip it.
> > > >
> > > > It's not likely the user space will depend on the old behavior.
> > > > So the risk of breaking user space is very low.
> > > >
> > > > CC: Jan Kara <jack@suse.cz>
> > > > CC: Neil Brown <neilb@suse.de>
> > > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> > >
> > > Thank you.
> > > 	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> > 
> > I have tried to do this in the past, and setting this value to 0 on some 
> > machines caused the machine to come to a complete standstill with small 
> > writes to disk. It seemed there was some kind of "minimum" amount of data 
> > required by the VM before anything would make it to the disk and I never 
> > quite found out where that blockade occurred. This was some time ago (3 years 
> > ago) so I'm not sure if the problem has since been fixed in the VM since 
> > then. I suggest you do some testing with this value set to zero before 
> > approving this change.

You are right, vm.dirty_ratio=0 will block applications for ever..

> 
>  If it is appropriate to have a lower limit, that should be imposed where
>  the sysctl is defined in kernel/sysctl.c, not imposed after the fact where
>  the value is used.
> 
>  As we now have dirty_bytes which over-rides dirty_ratio, there is little
>  cost in having a lower_limit for dirty_ratio - it could even stay at 5% -
>  but it really shouldn't be silent.  Writing a number below the limit to the
>  sysctl file should fail.

How about imposing an explicit bound of 1%? That's more natural and
its risk of breaking user space should be lower than 5%.

Thanks,
Fengguang
---
writeback: remove the internal 5% low bound on dirty_ratio

The dirty_ratio was silently 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. So let's rip the internal bound.

At the same time, force a user visible low bound of 1% for the vm.dirty_ratio
interface. Applications trying to write 0 will be rejected with -EINVAL. This
will break user space applications if they
1) try to write 0 to vm.dirty_ratio
2) and check the return value
That is very weird combination, so the risk of breaking user space is low.

CC: Jan Kara <jack@suse.cz>
CC: Neil Brown <neilb@suse.de>
CC: Rik van Riel <riel@redhat.com>
CC: Con Kolivas <kernel@kolivas.org>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
 kernel/sysctl.c     |    2 +-
 mm/page-writeback.c |   10 ++--------
 2 files changed, 3 insertions(+), 9 deletions(-)

--- linux-next.orig/mm/page-writeback.c	2010-08-20 20:14:11.000000000 +0800
+++ linux-next/mm/page-writeback.c	2010-08-23 10:31:01.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;
 
 	if (dirty_background_bytes)
 		background = DIV_ROUND_UP(dirty_background_bytes, PAGE_SIZE);
--- linux-next.orig/kernel/sysctl.c	2010-08-23 14:06:11.000000000 +0800
+++ linux-next/kernel/sysctl.c	2010-08-23 14:07:30.000000000 +0800
@@ -1029,7 +1029,7 @@ static struct ctl_table vm_table[] = {
 		.maxlen		= sizeof(vm_dirty_ratio),
 		.mode		= 0644,
 		.proc_handler	= dirty_ratio_handler,
-		.extra1		= &zero,
+		.extra1		= &one,
 		.extra2		= &one_hundred,
 	},
 	{

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-23  6:23         ` Wu Fengguang
  0 siblings, 0 replies; 33+ messages in thread
From: Wu Fengguang @ 2010-08-23  6:23 UTC (permalink / raw)
  To: Neil Brown
  Cc: Con Kolivas, KOSAKI Motohiro, Andrew Morton, linux-kernel,
	linux-fsdevel, linux-mm, riel, david, hch, axboe

On Mon, Aug 23, 2010 at 12:42:48PM +0800, Neil Brown wrote:
> On Fri, 20 Aug 2010 15:50:54 +1000
> Con Kolivas <kernel@kolivas.org> wrote:
> 
> > On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > > > The dirty_ratio was silently limited to >= 5%. This is not a user
> > > > expected behavior. Let's rip it.
> > > >
> > > > It's not likely the user space will depend on the old behavior.
> > > > So the risk of breaking user space is very low.
> > > >
> > > > CC: Jan Kara <jack@suse.cz>
> > > > CC: Neil Brown <neilb@suse.de>
> > > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> > >
> > > Thank you.
> > > 	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> > 
> > I have tried to do this in the past, and setting this value to 0 on some 
> > machines caused the machine to come to a complete standstill with small 
> > writes to disk. It seemed there was some kind of "minimum" amount of data 
> > required by the VM before anything would make it to the disk and I never 
> > quite found out where that blockade occurred. This was some time ago (3 years 
> > ago) so I'm not sure if the problem has since been fixed in the VM since 
> > then. I suggest you do some testing with this value set to zero before 
> > approving this change.

You are right, vm.dirty_ratio=0 will block applications for ever..

> 
>  If it is appropriate to have a lower limit, that should be imposed where
>  the sysctl is defined in kernel/sysctl.c, not imposed after the fact where
>  the value is used.
> 
>  As we now have dirty_bytes which over-rides dirty_ratio, there is little
>  cost in having a lower_limit for dirty_ratio - it could even stay at 5% -
>  but it really shouldn't be silent.  Writing a number below the limit to the
>  sysctl file should fail.

How about imposing an explicit bound of 1%? That's more natural and
its risk of breaking user space should be lower than 5%.

Thanks,
Fengguang
---
writeback: remove the internal 5% low bound on dirty_ratio

The dirty_ratio was silently 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. So let's rip the internal bound.

At the same time, force a user visible low bound of 1% for the vm.dirty_ratio
interface. Applications trying to write 0 will be rejected with -EINVAL. This
will break user space applications if they
1) try to write 0 to vm.dirty_ratio
2) and check the return value
That is very weird combination, so the risk of breaking user space is low.

CC: Jan Kara <jack@suse.cz>
CC: Neil Brown <neilb@suse.de>
CC: Rik van Riel <riel@redhat.com>
CC: Con Kolivas <kernel@kolivas.org>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
 kernel/sysctl.c     |    2 +-
 mm/page-writeback.c |   10 ++--------
 2 files changed, 3 insertions(+), 9 deletions(-)

--- linux-next.orig/mm/page-writeback.c	2010-08-20 20:14:11.000000000 +0800
+++ linux-next/mm/page-writeback.c	2010-08-23 10:31:01.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;
 
 	if (dirty_background_bytes)
 		background = DIV_ROUND_UP(dirty_background_bytes, PAGE_SIZE);
--- linux-next.orig/kernel/sysctl.c	2010-08-23 14:06:11.000000000 +0800
+++ linux-next/kernel/sysctl.c	2010-08-23 14:07:30.000000000 +0800
@@ -1029,7 +1029,7 @@ static struct ctl_table vm_table[] = {
 		.maxlen		= sizeof(vm_dirty_ratio),
 		.mode		= 0644,
 		.proc_handler	= dirty_ratio_handler,
-		.extra1		= &zero,
+		.extra1		= &one,
 		.extra2		= &one_hundred,
 	},
 	{

--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
  2010-08-23  6:23         ` Wu Fengguang
@ 2010-08-23  6:30           ` Con Kolivas
  -1 siblings, 0 replies; 33+ messages in thread
From: Con Kolivas @ 2010-08-23  6:30 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: Neil Brown, KOSAKI Motohiro, Andrew Morton, linux-kernel,
	linux-fsdevel, linux-mm, riel, david, hch, axboe

On Mon, 23 Aug 2010 04:23:59 pm Wu Fengguang wrote:
> On Mon, Aug 23, 2010 at 12:42:48PM +0800, Neil Brown wrote:
> > On Fri, 20 Aug 2010 15:50:54 +1000
> >
> > Con Kolivas <kernel@kolivas.org> wrote:
> > > On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > > > > The dirty_ratio was silently limited to >= 5%. This is not a user
> > > > > expected behavior. Let's rip it.
> > > > >
> > > > > It's not likely the user space will depend on the old behavior.
> > > > > So the risk of breaking user space is very low.
> > > > >
> > > > > CC: Jan Kara <jack@suse.cz>
> > > > > CC: Neil Brown <neilb@suse.de>
> > > > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> > > >
> > > > Thank you.
> > > > 	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> > >
> > > I have tried to do this in the past, and setting this value to 0 on
> > > some machines caused the machine to come to a complete standstill with
> > > small writes to disk. It seemed there was some kind of "minimum" amount
> > > of data required by the VM before anything would make it to the disk
> > > and I never quite found out where that blockade occurred. This was some
> > > time ago (3 years ago) so I'm not sure if the problem has since been
> > > fixed in the VM since then. I suggest you do some testing with this
> > > value set to zero before approving this change.
>
> You are right, vm.dirty_ratio=0 will block applications for ever..

Indeed. And while you shouldn't set the lower limit to zero to avoid this 
problem, it doesn't answer _why_ this happens. What is this "minimum write" 
that blocks everything, will 1% be enough, and is it hiding another real bug 
somewhere in the VM?

Regards,
Con
--
-ck

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-23  6:30           ` Con Kolivas
  0 siblings, 0 replies; 33+ messages in thread
From: Con Kolivas @ 2010-08-23  6:30 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: Neil Brown, KOSAKI Motohiro, Andrew Morton, linux-kernel,
	linux-fsdevel, linux-mm, riel, david, hch, axboe

On Mon, 23 Aug 2010 04:23:59 pm Wu Fengguang wrote:
> On Mon, Aug 23, 2010 at 12:42:48PM +0800, Neil Brown wrote:
> > On Fri, 20 Aug 2010 15:50:54 +1000
> >
> > Con Kolivas <kernel@kolivas.org> wrote:
> > > On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > > > > The dirty_ratio was silently limited to >= 5%. This is not a user
> > > > > expected behavior. Let's rip it.
> > > > >
> > > > > It's not likely the user space will depend on the old behavior.
> > > > > So the risk of breaking user space is very low.
> > > > >
> > > > > CC: Jan Kara <jack@suse.cz>
> > > > > CC: Neil Brown <neilb@suse.de>
> > > > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> > > >
> > > > Thank you.
> > > > 	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> > >
> > > I have tried to do this in the past, and setting this value to 0 on
> > > some machines caused the machine to come to a complete standstill with
> > > small writes to disk. It seemed there was some kind of "minimum" amount
> > > of data required by the VM before anything would make it to the disk
> > > and I never quite found out where that blockade occurred. This was some
> > > time ago (3 years ago) so I'm not sure if the problem has since been
> > > fixed in the VM since then. I suggest you do some testing with this
> > > value set to zero before approving this change.
>
> You are right, vm.dirty_ratio=0 will block applications for ever..

Indeed. And while you shouldn't set the lower limit to zero to avoid this 
problem, it doesn't answer _why_ this happens. What is this "minimum write" 
that blocks everything, will 1% be enough, and is it hiding another real bug 
somewhere in the VM?

Regards,
Con
--
-ck

--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
  2010-08-23  6:30           ` Con Kolivas
@ 2010-08-23  7:15             ` Wu Fengguang
  -1 siblings, 0 replies; 33+ messages in thread
From: Wu Fengguang @ 2010-08-23  7:15 UTC (permalink / raw)
  To: Con Kolivas
  Cc: Neil Brown, KOSAKI Motohiro, Andrew Morton, linux-kernel,
	linux-fsdevel, linux-mm, riel, david, hch, axboe

On Mon, Aug 23, 2010 at 02:30:40PM +0800, Con Kolivas wrote:
> On Mon, 23 Aug 2010 04:23:59 pm Wu Fengguang wrote:
> > On Mon, Aug 23, 2010 at 12:42:48PM +0800, Neil Brown wrote:
> > > On Fri, 20 Aug 2010 15:50:54 +1000
> > >
> > > Con Kolivas <kernel@kolivas.org> wrote:
> > > > On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > > > > > The dirty_ratio was silently limited to >= 5%. This is not a user
> > > > > > expected behavior. Let's rip it.
> > > > > >
> > > > > > It's not likely the user space will depend on the old behavior.
> > > > > > So the risk of breaking user space is very low.
> > > > > >
> > > > > > CC: Jan Kara <jack@suse.cz>
> > > > > > CC: Neil Brown <neilb@suse.de>
> > > > > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> > > > >
> > > > > Thank you.
> > > > > 	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> > > >
> > > > I have tried to do this in the past, and setting this value to 0 on
> > > > some machines caused the machine to come to a complete standstill with
> > > > small writes to disk. It seemed there was some kind of "minimum" amount
> > > > of data required by the VM before anything would make it to the disk
> > > > and I never quite found out where that blockade occurred. This was some
> > > > time ago (3 years ago) so I'm not sure if the problem has since been
> > > > fixed in the VM since then. I suggest you do some testing with this
> > > > value set to zero before approving this change.
> >
> > You are right, vm.dirty_ratio=0 will block applications for ever..
> 
> Indeed. And while you shouldn't set the lower limit to zero to avoid this 
> problem, it doesn't answer _why_ this happens. What is this "minimum write" 
> that blocks everything, will 1% be enough, and is it hiding another real bug 
> somewhere in the VM?

Good question.
This simple change will unblock the application even with vm_dirty_ratio=0.

# echo 0 > /proc/sys/vm/dirty_ratio
# echo 0 > /proc/sys/vm/dirty_background_ratio                                               
# vmmon nr_dirty nr_writeback nr_unstable

        nr_dirty     nr_writeback      nr_unstable
               0              444             1369
              37               37              326
               0                0               37
              74              772              694
               0                0               19
               0                0             1406
               0                0               23
               0                0                0
               0              370              186
              74             1073             1221
               0               12               26
               0              703             1147
              37                0              999
              37               37             1517
               0              888               63
               0                0                0
               0                0               20
              37                0                0
              37               74             1776
               0                0                8
              37              629              333
               0               12               19

Even with it, the 1% explicit bound still looks reasonable for me.
Who will want to set it to 0%? That would destroy IO inefficient.

Thanks,
Fengguang
---
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -542,8 +536,8 @@ static void balance_dirty_pages(struct address_space *mapping,
 		 * 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;

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-23  7:15             ` Wu Fengguang
  0 siblings, 0 replies; 33+ messages in thread
From: Wu Fengguang @ 2010-08-23  7:15 UTC (permalink / raw)
  To: Con Kolivas
  Cc: Neil Brown, KOSAKI Motohiro, Andrew Morton, linux-kernel,
	linux-fsdevel, linux-mm, riel, david, hch, axboe

On Mon, Aug 23, 2010 at 02:30:40PM +0800, Con Kolivas wrote:
> On Mon, 23 Aug 2010 04:23:59 pm Wu Fengguang wrote:
> > On Mon, Aug 23, 2010 at 12:42:48PM +0800, Neil Brown wrote:
> > > On Fri, 20 Aug 2010 15:50:54 +1000
> > >
> > > Con Kolivas <kernel@kolivas.org> wrote:
> > > > On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > > > > > The dirty_ratio was silently limited to >= 5%. This is not a user
> > > > > > expected behavior. Let's rip it.
> > > > > >
> > > > > > It's not likely the user space will depend on the old behavior.
> > > > > > So the risk of breaking user space is very low.
> > > > > >
> > > > > > CC: Jan Kara <jack@suse.cz>
> > > > > > CC: Neil Brown <neilb@suse.de>
> > > > > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> > > > >
> > > > > Thank you.
> > > > > 	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> > > >
> > > > I have tried to do this in the past, and setting this value to 0 on
> > > > some machines caused the machine to come to a complete standstill with
> > > > small writes to disk. It seemed there was some kind of "minimum" amount
> > > > of data required by the VM before anything would make it to the disk
> > > > and I never quite found out where that blockade occurred. This was some
> > > > time ago (3 years ago) so I'm not sure if the problem has since been
> > > > fixed in the VM since then. I suggest you do some testing with this
> > > > value set to zero before approving this change.
> >
> > You are right, vm.dirty_ratio=0 will block applications for ever..
> 
> Indeed. And while you shouldn't set the lower limit to zero to avoid this 
> problem, it doesn't answer _why_ this happens. What is this "minimum write" 
> that blocks everything, will 1% be enough, and is it hiding another real bug 
> somewhere in the VM?

Good question.
This simple change will unblock the application even with vm_dirty_ratio=0.

# echo 0 > /proc/sys/vm/dirty_ratio
# echo 0 > /proc/sys/vm/dirty_background_ratio                                               
# vmmon nr_dirty nr_writeback nr_unstable

        nr_dirty     nr_writeback      nr_unstable
               0              444             1369
              37               37              326
               0                0               37
              74              772              694
               0                0               19
               0                0             1406
               0                0               23
               0                0                0
               0              370              186
              74             1073             1221
               0               12               26
               0              703             1147
              37                0              999
              37               37             1517
               0              888               63
               0                0                0
               0                0               20
              37                0                0
              37               74             1776
               0                0                8
              37              629              333
               0               12               19

Even with it, the 1% explicit bound still looks reasonable for me.
Who will want to set it to 0%? That would destroy IO inefficient.

Thanks,
Fengguang
---
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -542,8 +536,8 @@ static void balance_dirty_pages(struct address_space *mapping,
 		 * 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;

--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
  2010-08-23  6:23         ` Wu Fengguang
@ 2010-08-24  0:00           ` KOSAKI Motohiro
  -1 siblings, 0 replies; 33+ messages in thread
From: KOSAKI Motohiro @ 2010-08-24  0:00 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: kosaki.motohiro, Neil Brown, Con Kolivas, Andrew Morton,
	linux-kernel, linux-fsdevel, linux-mm, riel, david, hch, axboe

> writeback: remove the internal 5% low bound on dirty_ratio
> 
> The dirty_ratio was silently 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. So let's rip the internal bound.
> 
> At the same time, force a user visible low bound of 1% for the vm.dirty_ratio
> interface. Applications trying to write 0 will be rejected with -EINVAL. This
> will break user space applications if they
> 1) try to write 0 to vm.dirty_ratio
> 2) and check the return value
> That is very weird combination, so the risk of breaking user space is low.

I'm ok this one too. because I bet nobody use 0% dirty ratio on their production
server and/or their own desktop. (i.e. I don't mind lab machine crash)

	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>

> 
> CC: Jan Kara <jack@suse.cz>
> CC: Neil Brown <neilb@suse.de>
> CC: Rik van Riel <riel@redhat.com>
> CC: Con Kolivas <kernel@kolivas.org>
> CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
> CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> ---
>  kernel/sysctl.c     |    2 +-
>  mm/page-writeback.c |   10 ++--------
>  2 files changed, 3 insertions(+), 9 deletions(-)
> 
> --- linux-next.orig/mm/page-writeback.c	2010-08-20 20:14:11.000000000 +0800
> +++ linux-next/mm/page-writeback.c	2010-08-23 10:31:01.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;
>  
>  	if (dirty_background_bytes)
>  		background = DIV_ROUND_UP(dirty_background_bytes, PAGE_SIZE);
> --- linux-next.orig/kernel/sysctl.c	2010-08-23 14:06:11.000000000 +0800
> +++ linux-next/kernel/sysctl.c	2010-08-23 14:07:30.000000000 +0800
> @@ -1029,7 +1029,7 @@ static struct ctl_table vm_table[] = {
>  		.maxlen		= sizeof(vm_dirty_ratio),
>  		.mode		= 0644,
>  		.proc_handler	= dirty_ratio_handler,
> -		.extra1		= &zero,
> +		.extra1		= &one,
>  		.extra2		= &one_hundred,
>  	},
>  	{




^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-24  0:00           ` KOSAKI Motohiro
  0 siblings, 0 replies; 33+ messages in thread
From: KOSAKI Motohiro @ 2010-08-24  0:00 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: kosaki.motohiro, Neil Brown, Con Kolivas, Andrew Morton,
	linux-kernel, linux-fsdevel, linux-mm, riel, david, hch, axboe

> writeback: remove the internal 5% low bound on dirty_ratio
> 
> The dirty_ratio was silently 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. So let's rip the internal bound.
> 
> At the same time, force a user visible low bound of 1% for the vm.dirty_ratio
> interface. Applications trying to write 0 will be rejected with -EINVAL. This
> will break user space applications if they
> 1) try to write 0 to vm.dirty_ratio
> 2) and check the return value
> That is very weird combination, so the risk of breaking user space is low.

I'm ok this one too. because I bet nobody use 0% dirty ratio on their production
server and/or their own desktop. (i.e. I don't mind lab machine crash)

	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>

> 
> CC: Jan Kara <jack@suse.cz>
> CC: Neil Brown <neilb@suse.de>
> CC: Rik van Riel <riel@redhat.com>
> CC: Con Kolivas <kernel@kolivas.org>
> CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
> CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> ---
>  kernel/sysctl.c     |    2 +-
>  mm/page-writeback.c |   10 ++--------
>  2 files changed, 3 insertions(+), 9 deletions(-)
> 
> --- linux-next.orig/mm/page-writeback.c	2010-08-20 20:14:11.000000000 +0800
> +++ linux-next/mm/page-writeback.c	2010-08-23 10:31:01.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;
>  
>  	if (dirty_background_bytes)
>  		background = DIV_ROUND_UP(dirty_background_bytes, PAGE_SIZE);
> --- linux-next.orig/kernel/sysctl.c	2010-08-23 14:06:11.000000000 +0800
> +++ linux-next/kernel/sysctl.c	2010-08-23 14:07:30.000000000 +0800
> @@ -1029,7 +1029,7 @@ static struct ctl_table vm_table[] = {
>  		.maxlen		= sizeof(vm_dirty_ratio),
>  		.mode		= 0644,
>  		.proc_handler	= dirty_ratio_handler,
> -		.extra1		= &zero,
> +		.extra1		= &one,
>  		.extra2		= &one_hundred,
>  	},
>  	{



--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
       [not found]     ` <201008251840.00532.kernel@kolivas.org>
@ 2010-08-26  1:29         ` Wu Fengguang
  0 siblings, 0 replies; 33+ messages in thread
From: Wu Fengguang @ 2010-08-26  1:29 UTC (permalink / raw)
  To: Con Kolivas
  Cc: Jan Kara, Neil Brown, Rik van Riel, Peter Zijlstra,
	KOSAKI Motohiro, Wu, Fengguang, Andrew Morton, linux-kernel,
	linux-fsdevel, linux-mm, david, hch, axboe

On Wed, Aug 25, 2010 at 04:40:00PM +0800, Con Kolivas wrote:
> On Tue, 24 Aug 2010 05:14:40 pm you wrote:
> > On Tue, Aug 24, 2010 at 02:20:54PM +0800, Con Kolivas wrote:
> > > On Mon, 23 Aug 2010 05:15:35 pm you wrote:
> > > > On Mon, Aug 23, 2010 at 02:30:40PM +0800, Con Kolivas wrote:
> > > > > On Mon, 23 Aug 2010 04:23:59 pm Wu Fengguang wrote:
> > > > > > On Mon, Aug 23, 2010 at 12:42:48PM +0800, Neil Brown wrote:
> > > > > > > On Fri, 20 Aug 2010 15:50:54 +1000
> > > > > > >
> > > > > > > Con Kolivas <kernel@kolivas.org> wrote:
> > > > > > > > On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > > > > > > > > > The dirty_ratio was silently limited to >= 5%. This is not
> > > > > > > > > > a user expected behavior. Let's rip it.
> > > > > > > > > >
> > > > > > > > > > It's not likely the user space will depend on the old
> > > > > > > > > > behavior. So the risk of breaking user space is very low.
> > > > > > > > > >
> > > > > > > > > > CC: Jan Kara <jack@suse.cz>
> > > > > > > > > > CC: Neil Brown <neilb@suse.de>
> > > > > > > > > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> > > > > > > > >
> > > > > > > > > Thank you.
> > > > > > > > > 	Reviewed-by: KOSAKI Motohiro
> > > > > > > > > <kosaki.motohiro@jp.fujitsu.com>
> > > > > > > >
> > > > > > > > I have tried to do this in the past, and setting this value to
> > > > > > > > 0 on some machines caused the machine to come to a complete
> > > > > > > > standstill with small writes to disk. It seemed there was some
> > > > > > > > kind of "minimum" amount of data required by the VM before
> > > > > > > > anything would make it to the disk and I never quite found out
> > > > > > > > where that blockade occurred. This was some time ago (3 years
> > > > > > > > ago) so I'm not sure if the problem has since been fixed in the
> > > > > > > > VM since then. I suggest you do some testing with this value
> > > > > > > > set to zero before approving this change.
> > > > > >
> > > > > > You are right, vm.dirty_ratio=0 will block applications for ever..
> > > > >
> > > > > Indeed. And while you shouldn't set the lower limit to zero to avoid
> > > > > this problem, it doesn't answer _why_ this happens. What is this
> > > > > "minimum write" that blocks everything, will 1% be enough, and is it
> > > > > hiding another real bug somewhere in the VM?
> > > >
> > > > Good question.
> > > > This simple change will unblock the application even with
> > > > vm_dirty_ratio=0.
> > > >
> > > > # echo 0 > /proc/sys/vm/dirty_ratio
> > > > # echo 0 > /proc/sys/vm/dirty_background_ratio
> > > > # vmmon nr_dirty nr_writeback nr_unstable
> > > >
> > > >         nr_dirty     nr_writeback      nr_unstable
> > > >                0              444             1369
> > > >               37               37              326
> > > >                0                0               37
> > > >               74              772              694
> > > >                0                0               19
> > > >                0                0             1406
> > > >                0                0               23
> > > >                0                0                0
> > > >                0              370              186
> > > >               74             1073             1221
> > > >                0               12               26
> > > >                0              703             1147
> > > >               37                0              999
> > > >               37               37             1517
> > > >                0              888               63
> > > >                0                0                0
> > > >                0                0               20
> > > >               37                0                0
> > > >               37               74             1776
> > > >                0                0                8
> > > >               37              629              333
> > > >                0               12               19
> > > >
> > > > Even with it, the 1% explicit bound still looks reasonable for me.
> > > > Who will want to set it to 0%? That would destroy IO inefficient.
> > >
> > > Thanks for your work in this area. I'll experiment with these later.
> > > There are low latency applications that would benefit with it set to
> > > zero.
> >
> > It might be useful to some users. Shall we give the rope to users, heh?
> >
> > Note that for these applications, they may well use
> > /proc/sys/vm/dirty_bytes for more fine grained control. That interface only
> > imposes a low limit of 2 pages.
> 
> I don't see why there needs to be a limit. Users fiddling with sysctls should 
> know what they're messing with, and there may well be a valid use out there 
> somewhere for it.

OK, the following patch gives users the full freedom. I tested 1
single dirtier and 9 parallel dirtiers, the system remains alive, but
with much slower IO throughput. Maybe not all users care IO performance
in all situations?

Thanks,
Fengguang
---
writeback: remove the internal 5% low bound on dirty_ratio

The dirty_ratio was silently 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 internal bound.

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.

CC: Jan Kara <jack@suse.cz>
CC: Neil Brown <neilb@suse.de>
CC: Con Kolivas <kernel@kolivas.org>
CC: Rik van Riel <riel@redhat.com>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
 mm/page-writeback.c |   14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

--- linux-next.orig/mm/page-writeback.c	2010-08-26 08:37:31.000000000 +0800
+++ linux-next/mm/page-writeback.c	2010-08-26 08:37:55.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;
 
 	if (dirty_background_bytes)
 		background = DIV_ROUND_UP(dirty_background_bytes, PAGE_SIZE);
@@ -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;

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-26  1:29         ` Wu Fengguang
  0 siblings, 0 replies; 33+ messages in thread
From: Wu Fengguang @ 2010-08-26  1:29 UTC (permalink / raw)
  To: Con Kolivas
  Cc: Jan Kara, Neil Brown, Rik van Riel, Peter Zijlstra,
	KOSAKI Motohiro, Wu, Fengguang, Andrew Morton, linux-kernel,
	linux-fsdevel, linux-mm, david, hch, axboe

On Wed, Aug 25, 2010 at 04:40:00PM +0800, Con Kolivas wrote:
> On Tue, 24 Aug 2010 05:14:40 pm you wrote:
> > On Tue, Aug 24, 2010 at 02:20:54PM +0800, Con Kolivas wrote:
> > > On Mon, 23 Aug 2010 05:15:35 pm you wrote:
> > > > On Mon, Aug 23, 2010 at 02:30:40PM +0800, Con Kolivas wrote:
> > > > > On Mon, 23 Aug 2010 04:23:59 pm Wu Fengguang wrote:
> > > > > > On Mon, Aug 23, 2010 at 12:42:48PM +0800, Neil Brown wrote:
> > > > > > > On Fri, 20 Aug 2010 15:50:54 +1000
> > > > > > >
> > > > > > > Con Kolivas <kernel@kolivas.org> wrote:
> > > > > > > > On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > > > > > > > > > The dirty_ratio was silently limited to >= 5%. This is not
> > > > > > > > > > a user expected behavior. Let's rip it.
> > > > > > > > > >
> > > > > > > > > > It's not likely the user space will depend on the old
> > > > > > > > > > behavior. So the risk of breaking user space is very low.
> > > > > > > > > >
> > > > > > > > > > CC: Jan Kara <jack@suse.cz>
> > > > > > > > > > CC: Neil Brown <neilb@suse.de>
> > > > > > > > > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> > > > > > > > >
> > > > > > > > > Thank you.
> > > > > > > > > 	Reviewed-by: KOSAKI Motohiro
> > > > > > > > > <kosaki.motohiro@jp.fujitsu.com>
> > > > > > > >
> > > > > > > > I have tried to do this in the past, and setting this value to
> > > > > > > > 0 on some machines caused the machine to come to a complete
> > > > > > > > standstill with small writes to disk. It seemed there was some
> > > > > > > > kind of "minimum" amount of data required by the VM before
> > > > > > > > anything would make it to the disk and I never quite found out
> > > > > > > > where that blockade occurred. This was some time ago (3 years
> > > > > > > > ago) so I'm not sure if the problem has since been fixed in the
> > > > > > > > VM since then. I suggest you do some testing with this value
> > > > > > > > set to zero before approving this change.
> > > > > >
> > > > > > You are right, vm.dirty_ratio=0 will block applications for ever..
> > > > >
> > > > > Indeed. And while you shouldn't set the lower limit to zero to avoid
> > > > > this problem, it doesn't answer _why_ this happens. What is this
> > > > > "minimum write" that blocks everything, will 1% be enough, and is it
> > > > > hiding another real bug somewhere in the VM?
> > > >
> > > > Good question.
> > > > This simple change will unblock the application even with
> > > > vm_dirty_ratio=0.
> > > >
> > > > # echo 0 > /proc/sys/vm/dirty_ratio
> > > > # echo 0 > /proc/sys/vm/dirty_background_ratio
> > > > # vmmon nr_dirty nr_writeback nr_unstable
> > > >
> > > >         nr_dirty     nr_writeback      nr_unstable
> > > >                0              444             1369
> > > >               37               37              326
> > > >                0                0               37
> > > >               74              772              694
> > > >                0                0               19
> > > >                0                0             1406
> > > >                0                0               23
> > > >                0                0                0
> > > >                0              370              186
> > > >               74             1073             1221
> > > >                0               12               26
> > > >                0              703             1147
> > > >               37                0              999
> > > >               37               37             1517
> > > >                0              888               63
> > > >                0                0                0
> > > >                0                0               20
> > > >               37                0                0
> > > >               37               74             1776
> > > >                0                0                8
> > > >               37              629              333
> > > >                0               12               19
> > > >
> > > > Even with it, the 1% explicit bound still looks reasonable for me.
> > > > Who will want to set it to 0%? That would destroy IO inefficient.
> > >
> > > Thanks for your work in this area. I'll experiment with these later.
> > > There are low latency applications that would benefit with it set to
> > > zero.
> >
> > It might be useful to some users. Shall we give the rope to users, heh?
> >
> > Note that for these applications, they may well use
> > /proc/sys/vm/dirty_bytes for more fine grained control. That interface only
> > imposes a low limit of 2 pages.
> 
> I don't see why there needs to be a limit. Users fiddling with sysctls should 
> know what they're messing with, and there may well be a valid use out there 
> somewhere for it.

OK, the following patch gives users the full freedom. I tested 1
single dirtier and 9 parallel dirtiers, the system remains alive, but
with much slower IO throughput. Maybe not all users care IO performance
in all situations?

Thanks,
Fengguang
---
writeback: remove the internal 5% low bound on dirty_ratio

The dirty_ratio was silently 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 internal bound.

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.

CC: Jan Kara <jack@suse.cz>
CC: Neil Brown <neilb@suse.de>
CC: Con Kolivas <kernel@kolivas.org>
CC: Rik van Riel <riel@redhat.com>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
 mm/page-writeback.c |   14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

--- linux-next.orig/mm/page-writeback.c	2010-08-26 08:37:31.000000000 +0800
+++ linux-next/mm/page-writeback.c	2010-08-26 08:37:55.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;
 
 	if (dirty_background_bytes)
 		background = DIV_ROUND_UP(dirty_background_bytes, PAGE_SIZE);
@@ -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;

--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
  2010-08-26  1:29         ` Wu Fengguang
@ 2010-08-26  1:36           ` Neil Brown
  -1 siblings, 0 replies; 33+ messages in thread
From: Neil Brown @ 2010-08-26  1:36 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: Con Kolivas, Jan Kara, Rik van Riel, Peter Zijlstra,
	KOSAKI Motohiro, Andrew Morton, linux-kernel, linux-fsdevel,
	linux-mm, david, hch, axboe

On Thu, 26 Aug 2010 09:29:45 +0800
Wu Fengguang <fengguang.wu@intel.com> wrote:

> On Wed, Aug 25, 2010 at 04:40:00PM +0800, Con Kolivas wrote:
> > On Tue, 24 Aug 2010 05:14:40 pm you wrote:
> > > On Tue, Aug 24, 2010 at 02:20:54PM +0800, Con Kolivas wrote:
> > > > On Mon, 23 Aug 2010 05:15:35 pm you wrote:
> > > > > On Mon, Aug 23, 2010 at 02:30:40PM +0800, Con Kolivas wrote:
> > > > > > On Mon, 23 Aug 2010 04:23:59 pm Wu Fengguang wrote:
> > > > > > > On Mon, Aug 23, 2010 at 12:42:48PM +0800, Neil Brown wrote:
> > > > > > > > On Fri, 20 Aug 2010 15:50:54 +1000
> > > > > > > >
> > > > > > > > Con Kolivas <kernel@kolivas.org> wrote:
> > > > > > > > > On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > > > > > > > > > > The dirty_ratio was silently limited to >= 5%. This is not
> > > > > > > > > > > a user expected behavior. Let's rip it.
> > > > > > > > > > >
> > > > > > > > > > > It's not likely the user space will depend on the old
> > > > > > > > > > > behavior. So the risk of breaking user space is very low.
> > > > > > > > > > >
> > > > > > > > > > > CC: Jan Kara <jack@suse.cz>
> > > > > > > > > > > CC: Neil Brown <neilb@suse.de>
> > > > > > > > > > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> > > > > > > > > >
> > > > > > > > > > Thank you.
> > > > > > > > > > 	Reviewed-by: KOSAKI Motohiro
> > > > > > > > > > <kosaki.motohiro@jp.fujitsu.com>
> > > > > > > > >
> > > > > > > > > I have tried to do this in the past, and setting this value to
> > > > > > > > > 0 on some machines caused the machine to come to a complete
> > > > > > > > > standstill with small writes to disk. It seemed there was some
> > > > > > > > > kind of "minimum" amount of data required by the VM before
> > > > > > > > > anything would make it to the disk and I never quite found out
> > > > > > > > > where that blockade occurred. This was some time ago (3 years
> > > > > > > > > ago) so I'm not sure if the problem has since been fixed in the
> > > > > > > > > VM since then. I suggest you do some testing with this value
> > > > > > > > > set to zero before approving this change.
> > > > > > >
> > > > > > > You are right, vm.dirty_ratio=0 will block applications for ever..
> > > > > >
> > > > > > Indeed. And while you shouldn't set the lower limit to zero to avoid
> > > > > > this problem, it doesn't answer _why_ this happens. What is this
> > > > > > "minimum write" that blocks everything, will 1% be enough, and is it
> > > > > > hiding another real bug somewhere in the VM?
> > > > >
> > > > > Good question.
> > > > > This simple change will unblock the application even with
> > > > > vm_dirty_ratio=0.
> > > > >
> > > > > # echo 0 > /proc/sys/vm/dirty_ratio
> > > > > # echo 0 > /proc/sys/vm/dirty_background_ratio
> > > > > # vmmon nr_dirty nr_writeback nr_unstable
> > > > >
> > > > >         nr_dirty     nr_writeback      nr_unstable
> > > > >                0              444             1369
> > > > >               37               37              326
> > > > >                0                0               37
> > > > >               74              772              694
> > > > >                0                0               19
> > > > >                0                0             1406
> > > > >                0                0               23
> > > > >                0                0                0
> > > > >                0              370              186
> > > > >               74             1073             1221
> > > > >                0               12               26
> > > > >                0              703             1147
> > > > >               37                0              999
> > > > >               37               37             1517
> > > > >                0              888               63
> > > > >                0                0                0
> > > > >                0                0               20
> > > > >               37                0                0
> > > > >               37               74             1776
> > > > >                0                0                8
> > > > >               37              629              333
> > > > >                0               12               19
> > > > >
> > > > > Even with it, the 1% explicit bound still looks reasonable for me.
> > > > > Who will want to set it to 0%? That would destroy IO inefficient.
> > > >
> > > > Thanks for your work in this area. I'll experiment with these later.
> > > > There are low latency applications that would benefit with it set to
> > > > zero.
> > >
> > > It might be useful to some users. Shall we give the rope to users, heh?
> > >
> > > Note that for these applications, they may well use
> > > /proc/sys/vm/dirty_bytes for more fine grained control. That interface only
> > > imposes a low limit of 2 pages.
> > 
> > I don't see why there needs to be a limit. Users fiddling with sysctls should 
> > know what they're messing with, and there may well be a valid use out there 
> > somewhere for it.
> 
> OK, the following patch gives users the full freedom. I tested 1
> single dirtier and 9 parallel dirtiers, the system remains alive, but
> with much slower IO throughput. Maybe not all users care IO performance
> in all situations?
> 
> Thanks,
> Fengguang
> ---
> writeback: remove the internal 5% low bound on dirty_ratio
> 
> The dirty_ratio was silently 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 internal bound.
> 
> 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.  I think it is
an aesthetic improvement as well as a functional one.

Reviewed-by: NeilBrown <neilb@suse.de>

Thanks,
NeilBrown


> 
> CC: Jan Kara <jack@suse.cz>
> CC: Neil Brown <neilb@suse.de>
> CC: Con Kolivas <kernel@kolivas.org>
> CC: Rik van Riel <riel@redhat.com>
> CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
> CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> ---
>  mm/page-writeback.c |   14 ++++----------
>  1 file changed, 4 insertions(+), 10 deletions(-)
> 
> --- linux-next.orig/mm/page-writeback.c	2010-08-26 08:37:31.000000000 +0800
> +++ linux-next/mm/page-writeback.c	2010-08-26 08:37:55.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;
>  
>  	if (dirty_background_bytes)
>  		background = DIV_ROUND_UP(dirty_background_bytes, PAGE_SIZE);
> @@ -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;


^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-26  1:36           ` Neil Brown
  0 siblings, 0 replies; 33+ messages in thread
From: Neil Brown @ 2010-08-26  1:36 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: Con Kolivas, Jan Kara, Rik van Riel, Peter Zijlstra,
	KOSAKI Motohiro, Andrew Morton, linux-kernel, linux-fsdevel,
	linux-mm, david, hch, axboe

On Thu, 26 Aug 2010 09:29:45 +0800
Wu Fengguang <fengguang.wu@intel.com> wrote:

> On Wed, Aug 25, 2010 at 04:40:00PM +0800, Con Kolivas wrote:
> > On Tue, 24 Aug 2010 05:14:40 pm you wrote:
> > > On Tue, Aug 24, 2010 at 02:20:54PM +0800, Con Kolivas wrote:
> > > > On Mon, 23 Aug 2010 05:15:35 pm you wrote:
> > > > > On Mon, Aug 23, 2010 at 02:30:40PM +0800, Con Kolivas wrote:
> > > > > > On Mon, 23 Aug 2010 04:23:59 pm Wu Fengguang wrote:
> > > > > > > On Mon, Aug 23, 2010 at 12:42:48PM +0800, Neil Brown wrote:
> > > > > > > > On Fri, 20 Aug 2010 15:50:54 +1000
> > > > > > > >
> > > > > > > > Con Kolivas <kernel@kolivas.org> wrote:
> > > > > > > > > On Fri, 20 Aug 2010 02:13:25 pm KOSAKI Motohiro wrote:
> > > > > > > > > > > The dirty_ratio was silently limited to >= 5%. This is not
> > > > > > > > > > > a user expected behavior. Let's rip it.
> > > > > > > > > > >
> > > > > > > > > > > It's not likely the user space will depend on the old
> > > > > > > > > > > behavior. So the risk of breaking user space is very low.
> > > > > > > > > > >
> > > > > > > > > > > CC: Jan Kara <jack@suse.cz>
> > > > > > > > > > > CC: Neil Brown <neilb@suse.de>
> > > > > > > > > > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> > > > > > > > > >
> > > > > > > > > > Thank you.
> > > > > > > > > > 	Reviewed-by: KOSAKI Motohiro
> > > > > > > > > > <kosaki.motohiro@jp.fujitsu.com>
> > > > > > > > >
> > > > > > > > > I have tried to do this in the past, and setting this value to
> > > > > > > > > 0 on some machines caused the machine to come to a complete
> > > > > > > > > standstill with small writes to disk. It seemed there was some
> > > > > > > > > kind of "minimum" amount of data required by the VM before
> > > > > > > > > anything would make it to the disk and I never quite found out
> > > > > > > > > where that blockade occurred. This was some time ago (3 years
> > > > > > > > > ago) so I'm not sure if the problem has since been fixed in the
> > > > > > > > > VM since then. I suggest you do some testing with this value
> > > > > > > > > set to zero before approving this change.
> > > > > > >
> > > > > > > You are right, vm.dirty_ratio=0 will block applications for ever..
> > > > > >
> > > > > > Indeed. And while you shouldn't set the lower limit to zero to avoid
> > > > > > this problem, it doesn't answer _why_ this happens. What is this
> > > > > > "minimum write" that blocks everything, will 1% be enough, and is it
> > > > > > hiding another real bug somewhere in the VM?
> > > > >
> > > > > Good question.
> > > > > This simple change will unblock the application even with
> > > > > vm_dirty_ratio=0.
> > > > >
> > > > > # echo 0 > /proc/sys/vm/dirty_ratio
> > > > > # echo 0 > /proc/sys/vm/dirty_background_ratio
> > > > > # vmmon nr_dirty nr_writeback nr_unstable
> > > > >
> > > > >         nr_dirty     nr_writeback      nr_unstable
> > > > >                0              444             1369
> > > > >               37               37              326
> > > > >                0                0               37
> > > > >               74              772              694
> > > > >                0                0               19
> > > > >                0                0             1406
> > > > >                0                0               23
> > > > >                0                0                0
> > > > >                0              370              186
> > > > >               74             1073             1221
> > > > >                0               12               26
> > > > >                0              703             1147
> > > > >               37                0              999
> > > > >               37               37             1517
> > > > >                0              888               63
> > > > >                0                0                0
> > > > >                0                0               20
> > > > >               37                0                0
> > > > >               37               74             1776
> > > > >                0                0                8
> > > > >               37              629              333
> > > > >                0               12               19
> > > > >
> > > > > Even with it, the 1% explicit bound still looks reasonable for me.
> > > > > Who will want to set it to 0%? That would destroy IO inefficient.
> > > >
> > > > Thanks for your work in this area. I'll experiment with these later.
> > > > There are low latency applications that would benefit with it set to
> > > > zero.
> > >
> > > It might be useful to some users. Shall we give the rope to users, heh?
> > >
> > > Note that for these applications, they may well use
> > > /proc/sys/vm/dirty_bytes for more fine grained control. That interface only
> > > imposes a low limit of 2 pages.
> > 
> > I don't see why there needs to be a limit. Users fiddling with sysctls should 
> > know what they're messing with, and there may well be a valid use out there 
> > somewhere for it.
> 
> OK, the following patch gives users the full freedom. I tested 1
> single dirtier and 9 parallel dirtiers, the system remains alive, but
> with much slower IO throughput. Maybe not all users care IO performance
> in all situations?
> 
> Thanks,
> Fengguang
> ---
> writeback: remove the internal 5% low bound on dirty_ratio
> 
> The dirty_ratio was silently 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 internal bound.
> 
> 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.  I think it is
an aesthetic improvement as well as a functional one.

Reviewed-by: NeilBrown <neilb@suse.de>

Thanks,
NeilBrown


> 
> CC: Jan Kara <jack@suse.cz>
> CC: Neil Brown <neilb@suse.de>
> CC: Con Kolivas <kernel@kolivas.org>
> CC: Rik van Riel <riel@redhat.com>
> CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
> CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> ---
>  mm/page-writeback.c |   14 ++++----------
>  1 file changed, 4 insertions(+), 10 deletions(-)
> 
> --- linux-next.orig/mm/page-writeback.c	2010-08-26 08:37:31.000000000 +0800
> +++ linux-next/mm/page-writeback.c	2010-08-26 08:37:55.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;
>  
>  	if (dirty_background_bytes)
>  		background = DIV_ROUND_UP(dirty_background_bytes, PAGE_SIZE);
> @@ -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;

--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
  2010-08-26  1:36           ` Neil Brown
@ 2010-08-26  4:22             ` KOSAKI Motohiro
  -1 siblings, 0 replies; 33+ messages in thread
From: KOSAKI Motohiro @ 2010-08-26  4:22 UTC (permalink / raw)
  To: Neil Brown
  Cc: kosaki.motohiro, Wu Fengguang, Con Kolivas, Jan Kara,
	Rik van Riel, Peter Zijlstra, Andrew Morton, linux-kernel,
	linux-fsdevel, linux-mm, david, hch, axboe

> > writeback: remove the internal 5% low bound on dirty_ratio
> > 
> > The dirty_ratio was silently 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 internal bound.
> > 
> > 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.  I think it is
> an aesthetic improvement as well as a functional one.
> 
> Reviewed-by: NeilBrown <neilb@suse.de>

I agree :)
	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>





^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-26  4:22             ` KOSAKI Motohiro
  0 siblings, 0 replies; 33+ messages in thread
From: KOSAKI Motohiro @ 2010-08-26  4:22 UTC (permalink / raw)
  To: Neil Brown
  Cc: kosaki.motohiro, Wu Fengguang, Con Kolivas, Jan Kara,
	Rik van Riel, Peter Zijlstra, Andrew Morton, linux-kernel,
	linux-fsdevel, linux-mm, david, hch, axboe

> > writeback: remove the internal 5% low bound on dirty_ratio
> > 
> > The dirty_ratio was silently 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 internal bound.
> > 
> > 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.  I think it is
> an aesthetic improvement as well as a functional one.
> 
> Reviewed-by: NeilBrown <neilb@suse.de>

I agree :)
	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>




--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
  2010-08-27 10:36 ` Wu Fengguang
@ 2010-08-27 13:47   ` Rik van Riel
  -1 siblings, 0 replies; 33+ messages in thread
From: Rik van Riel @ 2010-08-27 13:47 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: Andrew Morton, KOSAKI Motohiro, Neil Brown, Con Kolivas,
	Jan Kara, Peter Zijlstra, linux-kernel, linux-fsdevel, linux-mm,
	david, hch, axboe

On 08/27/2010 06:36 AM, 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 internal bound.
>
> 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>
> CC: Rik van Riel<riel@redhat.com>
> CC: Peter Zijlstra<a.p.zijlstra@chello.nl>
> Proposed-by: Con Kolivas<kernel@kolivas.org>
> 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>

Reviewed-by: Rik van Riel <riel@redhat.com>

-- 
All rights reversed

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-27 13:47   ` Rik van Riel
  0 siblings, 0 replies; 33+ messages in thread
From: Rik van Riel @ 2010-08-27 13:47 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: Andrew Morton, KOSAKI Motohiro, Neil Brown, Con Kolivas,
	Jan Kara, Peter Zijlstra, linux-kernel, linux-fsdevel, linux-mm,
	david, hch, axboe

On 08/27/2010 06:36 AM, 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 internal bound.
>
> 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>
> CC: Rik van Riel<riel@redhat.com>
> CC: Peter Zijlstra<a.p.zijlstra@chello.nl>
> Proposed-by: Con Kolivas<kernel@kolivas.org>
> 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>

Reviewed-by: Rik van Riel <riel@redhat.com>

-- 
All rights reversed

--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
  2010-08-27 10:36 ` Wu Fengguang
  (?)
@ 2010-08-27 10:39   ` Peter Zijlstra
  -1 siblings, 0 replies; 33+ messages in thread
From: Peter Zijlstra @ 2010-08-27 10:39 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: Andrew Morton, KOSAKI Motohiro, Neil Brown, Con Kolivas,
	Jan Kara, Rik van Riel, linux-kernel, linux-fsdevel, linux-mm,
	david, hch, axboe

On Fri, 2010-08-27 at 18:36 +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 internal bound.
> 
> 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>
> CC: Rik van Riel <riel@redhat.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Proposed-by: Con Kolivas <kernel@kolivas.org>
> 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>


^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-27 10:39   ` Peter Zijlstra
  0 siblings, 0 replies; 33+ messages in thread
From: Peter Zijlstra @ 2010-08-27 10:39 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: Andrew Morton, KOSAKI Motohiro, Neil Brown, Con Kolivas,
	Jan Kara, Rik van Riel, linux-kernel, linux-fsdevel, linux-mm,
	david, hch, axboe

On Fri, 2010-08-27 at 18:36 +0800, Wu Fengguang wrote:
> The dirty_ratio was siliently limited in global_dirty_limits() to >= 5%

^ permalink raw reply	[flat|nested] 33+ messages in thread

* Re: [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-27 10:39   ` Peter Zijlstra
  0 siblings, 0 replies; 33+ messages in thread
From: Peter Zijlstra @ 2010-08-27 10:39 UTC (permalink / raw)
  To: Wu Fengguang
  Cc: Andrew Morton, KOSAKI Motohiro, Neil Brown, Con Kolivas,
	Jan Kara, Rik van Riel, linux-kernel, linux-fsdevel, linux-mm,
	david, hch, axboe

On Fri, 2010-08-27 at 18:36 +0800, Wu Fengguang wrote:
> The dirty_ratio was siliently limited in global_dirty_limits() to >= 5%

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-27 10:36 ` Wu Fengguang
  0 siblings, 0 replies; 33+ messages in thread
From: Wu Fengguang @ 2010-08-27 10:36 UTC (permalink / raw)
  To: Andrew Morton
  Cc: KOSAKI Motohiro, Neil Brown, Con Kolivas, Jan Kara, Rik van Riel,
	Peter Zijlstra, linux-kernel, linux-fsdevel, linux-mm, david,
	hch, axboe

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 internal bound.

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>
CC: Rik van Riel <riel@redhat.com>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
Proposed-by: Con Kolivas <kernel@kolivas.org>
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>
---
 mm/page-writeback.c |   14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

--- linux-next.orig/mm/page-writeback.c	2010-08-26 08:37:31.000000000 +0800
+++ linux-next/mm/page-writeback.c	2010-08-26 08:37:55.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;
 
 	if (dirty_background_bytes)
 		background = DIV_ROUND_UP(dirty_background_bytes, PAGE_SIZE);
@@ -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;

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [PATCH] writeback: remove the internal 5% low bound on dirty_ratio
@ 2010-08-27 10:36 ` Wu Fengguang
  0 siblings, 0 replies; 33+ messages in thread
From: Wu Fengguang @ 2010-08-27 10:36 UTC (permalink / raw)
  To: Andrew Morton
  Cc: KOSAKI Motohiro, Neil Brown, Con Kolivas, Jan Kara, Rik van Riel,
	Peter Zijlstra, linux-kernel, linux-fsdevel, linux-mm, david,
	hch, axboe

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 internal bound.

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>
CC: Rik van Riel <riel@redhat.com>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
Proposed-by: Con Kolivas <kernel@kolivas.org>
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>
---
 mm/page-writeback.c |   14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

--- linux-next.orig/mm/page-writeback.c	2010-08-26 08:37:31.000000000 +0800
+++ linux-next/mm/page-writeback.c	2010-08-26 08:37:55.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;
 
 	if (dirty_background_bytes)
 		background = DIV_ROUND_UP(dirty_background_bytes, PAGE_SIZE);
@@ -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;

--
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>

^ permalink raw reply	[flat|nested] 33+ messages in thread

end of thread, other threads:[~2010-08-27 13:49 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-20  3:25 [PATCH] writeback: remove the internal 5% low bound on dirty_ratio Wu Fengguang
2010-08-20  3:25 ` Wu Fengguang
2010-08-20  3:46 ` Rik van Riel
2010-08-20  3:46   ` Rik van Riel
2010-08-20  4:13 ` KOSAKI Motohiro
2010-08-20  4:13   ` KOSAKI Motohiro
2010-08-20  5:50   ` Con Kolivas
2010-08-20  5:50     ` Con Kolivas
2010-08-20  5:56     ` Wu Fengguang
2010-08-20  5:56       ` Wu Fengguang
2010-08-23  4:42     ` Neil Brown
2010-08-23  4:42       ` Neil Brown
2010-08-23  6:23       ` Wu Fengguang
2010-08-23  6:23         ` Wu Fengguang
2010-08-23  6:30         ` Con Kolivas
2010-08-23  6:30           ` Con Kolivas
2010-08-23  7:15           ` Wu Fengguang
2010-08-23  7:15             ` Wu Fengguang
2010-08-24  0:00         ` KOSAKI Motohiro
2010-08-24  0:00           ` KOSAKI Motohiro
     [not found] ` <201008241620.54048.kernel@kolivas.org>
     [not found]   ` <20100824071440.GA14598@localhost>
     [not found]     ` <201008251840.00532.kernel@kolivas.org>
2010-08-26  1:29       ` Wu Fengguang
2010-08-26  1:29         ` Wu Fengguang
2010-08-26  1:36         ` Neil Brown
2010-08-26  1:36           ` Neil Brown
2010-08-26  4:22           ` KOSAKI Motohiro
2010-08-26  4:22             ` KOSAKI Motohiro
2010-08-27 10:36 Wu Fengguang
2010-08-27 10:36 ` Wu Fengguang
2010-08-27 10:39 ` Peter Zijlstra
2010-08-27 10:39   ` Peter Zijlstra
2010-08-27 10:39   ` Peter Zijlstra
2010-08-27 13:47 ` Rik van Riel
2010-08-27 13:47   ` Rik van Riel

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.