linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mm: do not print backtraces on GFP_ATOMIC failures
@ 2010-09-21 16:18 Rik van Riel
  2010-09-21 16:46 ` Andrew Morton
  0 siblings, 1 reply; 5+ messages in thread
From: Rik van Riel @ 2010-09-21 16:18 UTC (permalink / raw)
  To: linux-mm; +Cc: linux-kernel, akpm, KOSAKI Motohiro

Atomic allocations cannot fall back to the page eviction code
and are expected to fail.  In fact, in some network intensive
workloads, it is common to experience hundreds of GFP_ATOMIC
allocation failures.

Printing out a backtrace for every one of those expected
allocation failures accomplishes nothing good. At multi-gigabit
network speeds with jumbo frames, a burst of allocation failure
backtraces could even slow down the system.

We're better off not printing out backtraces on GFP_ATOMIC
allocation failures.

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

diff --git a/include/linux/gfp.h b/include/linux/gfp.h
index 975609c..5a0bddb 100644
--- a/include/linux/gfp.h
+++ b/include/linux/gfp.h
@@ -72,7 +72,7 @@ struct vm_area_struct;
 /* This equals 0, but use constants in case they ever change */
 #define GFP_NOWAIT	(GFP_ATOMIC & ~__GFP_HIGH)
 /* GFP_ATOMIC means both !wait (__GFP_WAIT not set) and use emergency pool */
-#define GFP_ATOMIC	(__GFP_HIGH)
+#define GFP_ATOMIC	(__GFP_HIGH | __GFP_NOWARN)
 #define GFP_NOIO	(__GFP_WAIT)
 #define GFP_NOFS	(__GFP_WAIT | __GFP_IO)
 #define GFP_KERNEL	(__GFP_WAIT | __GFP_IO | __GFP_FS)

--
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 related	[flat|nested] 5+ messages in thread

* Re: [PATCH] mm: do not print backtraces on GFP_ATOMIC failures
  2010-09-21 16:18 [PATCH] mm: do not print backtraces on GFP_ATOMIC failures Rik van Riel
@ 2010-09-21 16:46 ` Andrew Morton
  2010-09-21 17:00   ` Eric Dumazet
  0 siblings, 1 reply; 5+ messages in thread
From: Andrew Morton @ 2010-09-21 16:46 UTC (permalink / raw)
  To: Rik van Riel; +Cc: linux-mm, linux-kernel, KOSAKI Motohiro, netdev

On Tue, 21 Sep 2010 12:18:18 -0400 Rik van Riel <riel@redhat.com> wrote:

> Atomic allocations cannot fall back to the page eviction code
> and are expected to fail.  In fact, in some network intensive
> workloads, it is common to experience hundreds of GFP_ATOMIC
> allocation failures.
> 
> Printing out a backtrace for every one of those expected
> allocation failures accomplishes nothing good. At multi-gigabit
> network speeds with jumbo frames, a burst of allocation failure
> backtraces could even slow down the system.
> 
> We're better off not printing out backtraces on GFP_ATOMIC
> allocation failures.
> 
> Signed-off-by: Rik van Riel <riel@redhat.com>
> 
> diff --git a/include/linux/gfp.h b/include/linux/gfp.h
> index 975609c..5a0bddb 100644
> --- a/include/linux/gfp.h
> +++ b/include/linux/gfp.h
> @@ -72,7 +72,7 @@ struct vm_area_struct;
>  /* This equals 0, but use constants in case they ever change */
>  #define GFP_NOWAIT	(GFP_ATOMIC & ~__GFP_HIGH)
>  /* GFP_ATOMIC means both !wait (__GFP_WAIT not set) and use emergency pool */
> -#define GFP_ATOMIC	(__GFP_HIGH)
> +#define GFP_ATOMIC	(__GFP_HIGH | __GFP_NOWARN)
>  #define GFP_NOIO	(__GFP_WAIT)
>  #define GFP_NOFS	(__GFP_WAIT | __GFP_IO)
>  #define GFP_KERNEL	(__GFP_WAIT | __GFP_IO | __GFP_FS)

A much finer-tuned implementation would be to add __GFP_NOWARN just to
the networking call sites.  I asked about this in June and it got
nixed:

http://www.spinics.net/lists/netdev/msg131965.html

--
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] 5+ messages in thread

* Re: [PATCH] mm: do not print backtraces on GFP_ATOMIC failures
  2010-09-21 16:46 ` Andrew Morton
@ 2010-09-21 17:00   ` Eric Dumazet
  2010-09-27  2:17     ` KOSAKI Motohiro
  0 siblings, 1 reply; 5+ messages in thread
From: Eric Dumazet @ 2010-09-21 17:00 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Rik van Riel, linux-mm, linux-kernel, KOSAKI Motohiro, netdev

Le mardi 21 septembre 2010 A  09:46 -0700, Andrew Morton a A(C)crit :
> On Tue, 21 Sep 2010 12:18:18 -0400 Rik van Riel <riel@redhat.com> wrote:
> 
> > Atomic allocations cannot fall back to the page eviction code
> > and are expected to fail.  In fact, in some network intensive
> > workloads, it is common to experience hundreds of GFP_ATOMIC
> > allocation failures.
> > 
> > Printing out a backtrace for every one of those expected
> > allocation failures accomplishes nothing good. At multi-gigabit
> > network speeds with jumbo frames, a burst of allocation failure
> > backtraces could even slow down the system.
> > 
> > We're better off not printing out backtraces on GFP_ATOMIC
> > allocation failures.
> > 
> > Signed-off-by: Rik van Riel <riel@redhat.com>
> > 
> > diff --git a/include/linux/gfp.h b/include/linux/gfp.h
> > index 975609c..5a0bddb 100644
> > --- a/include/linux/gfp.h
> > +++ b/include/linux/gfp.h
> > @@ -72,7 +72,7 @@ struct vm_area_struct;
> >  /* This equals 0, but use constants in case they ever change */
> >  #define GFP_NOWAIT	(GFP_ATOMIC & ~__GFP_HIGH)
> >  /* GFP_ATOMIC means both !wait (__GFP_WAIT not set) and use emergency pool */
> > -#define GFP_ATOMIC	(__GFP_HIGH)
> > +#define GFP_ATOMIC	(__GFP_HIGH | __GFP_NOWARN)
> >  #define GFP_NOIO	(__GFP_WAIT)
> >  #define GFP_NOFS	(__GFP_WAIT | __GFP_IO)
> >  #define GFP_KERNEL	(__GFP_WAIT | __GFP_IO | __GFP_FS)
> 
> A much finer-tuned implementation would be to add __GFP_NOWARN just to
> the networking call sites.  I asked about this in June and it got
> nixed:
> 
> http://www.spinics.net/lists/netdev/msg131965.html
> --

Yes, I remember this particular report was useful to find and correct a
bug.

I dont know what to say.

Being silent or verbose, it really depends on the context ?



--
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] 5+ messages in thread

* Re: [PATCH] mm: do not print backtraces on GFP_ATOMIC failures
  2010-09-21 17:00   ` Eric Dumazet
@ 2010-09-27  2:17     ` KOSAKI Motohiro
  2010-09-27 18:49       ` Andrew Morton
  0 siblings, 1 reply; 5+ messages in thread
From: KOSAKI Motohiro @ 2010-09-27  2:17 UTC (permalink / raw)
  To: Eric Dumazet
  Cc: kosaki.motohiro, Andrew Morton, Rik van Riel, linux-mm,
	linux-kernel, netdev

> > > @@ -72,7 +72,7 @@ struct vm_area_struct;
> > >  /* This equals 0, but use constants in case they ever change */
> > >  #define GFP_NOWAIT	(GFP_ATOMIC & ~__GFP_HIGH)
> > >  /* GFP_ATOMIC means both !wait (__GFP_WAIT not set) and use emergency pool */
> > > -#define GFP_ATOMIC	(__GFP_HIGH)
> > > +#define GFP_ATOMIC	(__GFP_HIGH | __GFP_NOWARN)
> > >  #define GFP_NOIO	(__GFP_WAIT)
> > >  #define GFP_NOFS	(__GFP_WAIT | __GFP_IO)
> > >  #define GFP_KERNEL	(__GFP_WAIT | __GFP_IO | __GFP_FS)
> > 
> > A much finer-tuned implementation would be to add __GFP_NOWARN just to
> > the networking call sites.  I asked about this in June and it got
> > nixed:
> > 
> > http://www.spinics.net/lists/netdev/msg131965.html
> > --
> 
> Yes, I remember this particular report was useful to find and correct a
> bug.
> 
> I dont know what to say.
> 
> Being silent or verbose, it really depends on the context ?

At least, MM developers don't want to track network allocation failure
issue. We don't have enough knowledge in this area. To be honest, We 
are unhappy current bad S/N bug report rate ;)

Traditionally, We hoped this warnings help to debug VM issue. but
It haven't happen. We haven't detect VM issue from this allocation
failure report. Instead, We've received a lot of network allocation
failure report.

Recently, The S/N ratio became more bad. If the network device enable
jumbo frame feature, order-2 GFP_ATOMIC allocation is called frequently.
Anybody don't have to assume order-2 allocation can success anytime.

I'm not against accurate warning at all. but I cant tolerate this
semi-random warning steal our time. If anyone will not make accurate
warning, I hope to remove this one completely instead.





--
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] 5+ messages in thread

* Re: [PATCH] mm: do not print backtraces on GFP_ATOMIC failures
  2010-09-27  2:17     ` KOSAKI Motohiro
@ 2010-09-27 18:49       ` Andrew Morton
  0 siblings, 0 replies; 5+ messages in thread
From: Andrew Morton @ 2010-09-27 18:49 UTC (permalink / raw)
  To: KOSAKI Motohiro
  Cc: Eric Dumazet, Rik van Riel, linux-mm, linux-kernel, netdev

On Mon, 27 Sep 2010 11:17:19 +0900 (JST)
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote:

> > > > @@ -72,7 +72,7 @@ struct vm_area_struct;
> > > >  /* This equals 0, but use constants in case they ever change */
> > > >  #define GFP_NOWAIT	(GFP_ATOMIC & ~__GFP_HIGH)
> > > >  /* GFP_ATOMIC means both !wait (__GFP_WAIT not set) and use emergency pool */
> > > > -#define GFP_ATOMIC	(__GFP_HIGH)
> > > > +#define GFP_ATOMIC	(__GFP_HIGH | __GFP_NOWARN)
> > > >  #define GFP_NOIO	(__GFP_WAIT)
> > > >  #define GFP_NOFS	(__GFP_WAIT | __GFP_IO)
> > > >  #define GFP_KERNEL	(__GFP_WAIT | __GFP_IO | __GFP_FS)
> > > 
> > > A much finer-tuned implementation would be to add __GFP_NOWARN just to
> > > the networking call sites.  I asked about this in June and it got
> > > nixed:
> > > 
> > > http://www.spinics.net/lists/netdev/msg131965.html
> > > --
> > 
> > Yes, I remember this particular report was useful to find and correct a
> > bug.
> > 
> > I dont know what to say.
> > 
> > Being silent or verbose, it really depends on the context ?
> 
> At least, MM developers don't want to track network allocation failure
> issue. We don't have enough knowledge in this area. To be honest, We 
> are unhappy current bad S/N bug report rate ;)
> 
> Traditionally, We hoped this warnings help to debug VM issue.

Well, no, not really.  I thought that the main reason for having that
warning was to debug _callers_ of the memory allocator.

Firstly it tells us when callsites are being too optimistic: asking for
large amounts of contiguous pages, sometimes from atomic context. 
Quite a number of such callsites have been fixed as a result.

Secondly, memory allocation failures are a rare event, so the calling
code's error paths are not well tested.  This warning turns the bug
report "hey, my computer locked up" into the much better "hey, I got
this error message and then my computer locked up".  This allows us to
go and look at the offending code and see if it is handling ENOMEM
correctly.  However I don't recall this scenario ever having actually
happened.

> but
> It haven't happen. We haven't detect VM issue from this allocation
> failure report. Instead, We've received a lot of network allocation
> failure report.
> 
> Recently, The S/N ratio became more bad. If the network device enable
> jumbo frame feature, order-2 GFP_ATOMIC allocation is called frequently.
> Anybody don't have to assume order-2 allocation can success anytime.
> 
> I'm not against accurate warning at all. but I cant tolerate this
> semi-random warning steal our time. If anyone will not make accurate
> warning, I hope to remove this one completely instead.

We can disable the warning for only net drivers quite easily.  I don't
have any strong opinions, really - yes, we get quite a few such bug
reports but most of them end up in my lap anyway and it can't be more
than one per week, shrug.

--
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] 5+ messages in thread

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

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-21 16:18 [PATCH] mm: do not print backtraces on GFP_ATOMIC failures Rik van Riel
2010-09-21 16:46 ` Andrew Morton
2010-09-21 17:00   ` Eric Dumazet
2010-09-27  2:17     ` KOSAKI Motohiro
2010-09-27 18:49       ` Andrew Morton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).