Re: GFP_ATOMIC page allocation failures.

From: Bodo Eggert
Date: Fri Apr 04 2008 - 07:37:41 EST


On Fri, 4 Apr 2008, Nick Piggin wrote:

> On Friday 04 April 2008 20:52, Bodo Eggert wrote:
> > Nick Piggin <nickpiggin@xxxxxxxxxxxx> wrote:
> > > On Thursday 03 April 2008 05:18, Jeff Garzik wrote:
> > >> Turning to Nick's comment,
> > >>
> > >> > It's still actually nice to know how often it is happening even for
> > >> > these known good sites because too much can indicate a problem and
> > >> > that you could actually bring performance up by tuning some things.
> > >>
> > >> then create a counter or acculuation buffer somewhere.
> > >>
> > >> We don't need spew every time there is memory pressure of this
> > >> magnitude.
> > >
> > > Not a complete solution. Counter would be nice, but you need backtraces
> > > and want a way to more proactively warn the user/tester/developer.
> > >
> > > I agree that I don't exactly like adding nowarns around, and I don't
> > > think places like driver writers should have to know about this stuff.
> >
> > What about reverse ratelimiting: If the limit is reached, a backtrace will
> > be generated (and, off cause, positively ratelimited)?
>
> I was thinking about that. I got as far as writing a simple patch to
> printk so that it would not start to trigger until it gets a 2nd event
> within 'n' jiffies of the first.

I think there was a standalone ratelimit function. I'd use it like this:

static atomic_alloc_ratelimit; /* needs to be initialized ... */

{
...
if (success)
return mem;
if(!debug && ratelimit(atomic_alloc_ratelimit))
return err_ptr(-ENOMEM);
if (printk_ratelimit(first line) > 0) {
printk(rest);
}
}

> But actually developers do sometimes want see the event even if it is
> relatively infrequent...

You shouldn't frighten the users either. /proc/sys/vm/debug?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/