2008-06-22 17:07:10

by Mel Gorman

[permalink] [raw]
Subject: Re: 2.6.26-rc: nfsd hangs for a few sec

On (21/06/08 21:13), Christoph Lameter didst pronounce:
> On Sun, 22 Jun 2008, Mel Gorman wrote:
> > > Before the change we walk all zones of the zonelist.
> > >
> >
> > Yeah, but the zonelist is for GFP_KERNEL so it should not include the HIGHMEM
> > zones, right? The key change is that after the patch there are fewer zonelists
> > than get filtered.
> But the HIGHMEM zones etc were included before. There was no check for
> HIGHMEM etc there. The gfpmask was ignored.

Well, the mask is not totally ignored, it's part of the scan_control and
used later when deciding what can and can't be done as part of reclaim.
However, you are right in that it is apparently ignored for zone

However, try_to_free_pages() received a struct zone **zones which was
a zonelist which is a zonelist->zones selected based on the gfp_mask in
__alloc_pages. By the time shrink_zones() is called, it can ignore the
mask because only relevant zones are in there. For GFP_KERNEL, that would
exclude HIGHMEM.

> > I think the effect of that patch is that zones get shrunk that have
> > nothing to do with the requestors requirements. Right?
> Right. AFAICT That was the behavior before the change.

Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab