Re: [RFC][PATCH 1/6] mm: Introduce __GFP_NO_OOM_KILL

From: Rafael J. Wysocki
Date: Mon May 11 2009 - 19:05:46 EST


On Tuesday 12 May 2009, Andrew Morton wrote:
> On Tue, 12 May 2009 00:14:23 +0200
> "Rafael J. Wysocki" <rjw@xxxxxxx> wrote:
>
> > On Monday 11 May 2009, David Rientjes wrote:
> > > On Sun, 10 May 2009, Rafael J. Wysocki wrote:
> > >
> > > > Index: linux-2.6/mm/page_alloc.c
> > > > ===================================================================
> > > > --- linux-2.6.orig/mm/page_alloc.c
> > > > +++ linux-2.6/mm/page_alloc.c
> > > > @@ -1619,8 +1619,12 @@ nofail_alloc:
> > > > goto got_pg;
> > > > }
> > > >
> > > > - /* The OOM killer will not help higher order allocs so fail */
> > > > - if (order > PAGE_ALLOC_COSTLY_ORDER) {
> > > > + /*
> > > > + * The OOM killer will not help higher order allocs so fail.
> > > > + * Also fail if the caller doesn't want the OOM killer to run.
> > > > + */
> > > > + if (order > PAGE_ALLOC_COSTLY_ORDER
> > > > + || (gfp_mask & __GFP_NO_OOM_KILL)) {
> > > > clear_zonelist_oom(zonelist, gfp_mask);
> > > > goto nopage;
> > > > }
> > > > Index: linux-2.6/include/linux/gfp.h
> > > > ===================================================================
> > > > --- linux-2.6.orig/include/linux/gfp.h
> > > > +++ linux-2.6/include/linux/gfp.h
> > > > @@ -51,8 +51,9 @@ struct vm_area_struct;
> > > > #define __GFP_THISNODE ((__force gfp_t)0x40000u)/* No fallback, no policies */
> > > > #define __GFP_RECLAIMABLE ((__force gfp_t)0x80000u) /* Page is reclaimable */
> > > > #define __GFP_MOVABLE ((__force gfp_t)0x100000u) /* Page is movable */
> > > > +#define __GFP_NO_OOM_KILL ((__force gfp_t)0x200000u) /* Don't invoke out_of_memory() */
> > > >
> > > > -#define __GFP_BITS_SHIFT 21 /* Room for 21 __GFP_FOO bits */
> > > > +#define __GFP_BITS_SHIFT 22 /* Number of __GFP_FOO bits */
> > > > #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
> > > >
> > > > /* This equals 0, but use constants in case they ever change */
> > > >
> > >
> > > Nack, unnecessary in mmotm and my patch series from
> > > http://lkml.org/lkml/2009/5/10/118.
> >
> > Andrew, what's your opinion, please?
>
> I don't understand which part of David's patch series is supposed to
> address your requirement. If it's "don't kill tasks which are in D
> state" then that's a problem because right now I think that patch is
> wrong. It's still being discussed.

Yeah.

> > I can wait with these patches until the dust settles in the mm land.
>
> Yes, it is pretty dusty at present. I'd suggest that finding something
> else to do for a few days would be a wise step ;)

Well, in fact I have finished the other parts of my patchset and the only
missing piece is how to prevent the OOM killer from triggering while
hibernation memory is being allocated, but in principle that can be done in a
couple of different ways.

So, I think I'll post an update shortly and I'll wait for mm to settle down.
--
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/