Re: [PATCH 07/20] Simplify the check on whether cpusets are a factor or not

Pekka Enberg
2009-02-23T09:13:42Z

On Mon, 2009-02-23 at 10:07 +0100, Peter Zijlstra wrote:
> On Mon, 2009-02-23 at 09:14 +0200, Pekka J Enberg wrote:
> > On Sun, 22 Feb 2009, Mel Gorman wrote:
> > > The check whether cpuset contraints need to be checked or not is complex
> > > and often repeated. This patch makes the check in advance to the comparison
> > > is simplier to compute.
> > >
> > > Signed-off-by: Mel Gorman <mel@csn.ul.ie>
> >
> > You can do that in a cleaner way by defining ALLOC_CPUSET to be zero when
> > CONFIG_CPUSETS is disabled. Something like following untested patch:
> >
> > Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
> > ---
> >
> > diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> > index 5675b30..18b687d 100644
> > --- a/mm/page_alloc.c
> > +++ b/mm/page_alloc.c
> > @@ -1135,7 +1135,12 @@ failed:
> > #define ALLOC_WMARK_HIGH 0x08 /* use pages_high watermark */
> > #define ALLOC_HARDER 0x10 /* try to alloc harder */
> > #define ALLOC_HIGH 0x20 /* __GFP_HIGH set */
> > +
> > +#ifdef CONFIG_CPUSETS
> > #define ALLOC_CPUSET 0x40 /* check for correct cpuset */
> > +#else
> > +#define ALLOC_CPUSET 0x00
> > +#endif
> >
>
> Mel's patch however even avoids the code when cpusets are configured but
> not actively used (the most common case for distro kernels).

Right. Combining both patches is probably the best solution then as we
get rid of the #ifdef in get_page_from_freelist().

Pekka