netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] mm: do not print backtraces on GFP_ATOMIC failures
       [not found] <20100921121818.4745f038@annuminas.surriel.com>
@ 2010-09-21 16:46 ` Andrew Morton
  2010-09-21 17:00   ` Eric Dumazet
  0 siblings, 1 reply; 4+ 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] 4+ messages in thread

* Re: [PATCH] mm: do not print backtraces on GFP_ATOMIC failures
  2010-09-21 16:46 ` [PATCH] mm: do not print backtraces on GFP_ATOMIC failures Andrew Morton
@ 2010-09-21 17:00   ` Eric Dumazet
  2010-09-27  2:17     ` KOSAKI Motohiro
  0 siblings, 1 reply; 4+ 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 à 09:46 -0700, Andrew Morton a é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] 4+ 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; 4+ 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.






^ permalink raw reply	[flat|nested] 4+ 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; 4+ 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] 4+ messages in thread

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

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20100921121818.4745f038@annuminas.surriel.com>
2010-09-21 16:46 ` [PATCH] mm: do not print backtraces on GFP_ATOMIC failures 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).