Re: [PATCH]: Clean up of __alloc_pages

Rohit Seth
2005-10-03T17:42:05Z

On Mon, 2005-10-03 at 09:57 -0700, Christoph Lameter wrote:
> On Mon, 3 Oct 2005, Rohit Seth wrote:
>
> > > Seems that this removes the logic intended to prefer local
> > > allocations over remote pages present in the existing alloc_pages? There
> > > is the danger that this modification will lead to the allocation of remote
> > > pages even if local pages are available. Thus reducing performance.
> > Good catch. I will up level the cpuset check in buffered_rmqueue rather
> > then doing it in get_page_from_freelist. That should retain the current
> > preferences for local pages.
>
> This is not only the cpuset check. If there is memory available in an
> earlier zone then it needs to be taken regardless of later pcp's
> the zonelist containing pages. Otherwise we did not take the pages nearest
> to the requested node.
>

Ah. Okay.

> > > I would suggest to just check the first zone's pcp instead of all zones.
> > >
> >
> > Na. This for most cases will be ZONE_DMA pcp list having nothing much
> > most of the time. And picking any other zone randomly will be exposed
> > to faulty behavior.
>
> Maybe only check the first node?
>

I think conceptually this ask for a new flag __GFP_NODEONLY that
indicate allocations to come from current node only.

This definitely though means I will need to separate out the allocation
from pcp patch (as Nick suggested earlier).

-rohit