Re: [PATCH 2/3] page allocator: Do not allow interrupts to use ALLOC_HARDER

David Rientjes
2009-10-27T21:12:41Z

On Tue, 27 Oct 2009, Andrew Morton wrote:

> > diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> > index dfa4362..7f2aa3e 100644
> > --- a/mm/page_alloc.c
> > +++ b/mm/page_alloc.c
> > @@ -1769,7 +1769,7 @@ gfp_to_alloc_flags(gfp_t gfp_mask)
> > * See also cpuset_zone_allowed() comment in kernel/cpuset.c.
> > */
> > alloc_flags &= ~ALLOC_CPUSET;
> > - } else if (unlikely(rt_task(p)))
> > + } else if (unlikely(rt_task(p)) && !in_interrupt())
> > alloc_flags |= ALLOC_HARDER;
> >
> > if (likely(!(gfp_mask & __GFP_NOMEMALLOC))) {
>
> What are the runtime-observeable effects of this change?
>

Giving rt tasks access to memory reserves is necessary to reduce latency,
the privilege does not apply to interrupts that subsequently get run on
the same cpu.

> The description is a bit waffly-sounding for a -stable backportable
> thing, IMO. What reason do the -stable maintainers and users have to
> believe that this patch is needed, and an improvement?
>

Allowing interrupts to allocate below the low watermark when not
GFP_ATOMIC depletes memory reserves; this fixes an inconsistency
introduced by the page allocator refactoring patchset that went into
2.6.31.