From: Dave Hansen <haveblue@us.ibm.com>
To: Andrew Morton <akpm@osdl.org>
Cc: Mel Gorman <mel@csn.ul.ie>,
lhms-devel@lists.sourceforge.net, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, Andy Whitcroft <apw@shadowen.org>,
Linus Torvalds <torvalds@osdl.org>
Subject: Re: [PATCH] BUG: gfp_zone() not mapping zone modifiers correctly and bad ordering of fallback lists
Date: Fri, 13 Jan 2006 18:24:44 -0800 [thread overview]
Message-ID: <1137205485.7130.81.camel@localhost.localdomain> (raw)
In-Reply-To: <20060113121652.114941a3.akpm@osdl.org>
On Fri, 2006-01-13 at 12:16 -0800, Andrew Morton wrote:
> mel@csn.ul.ie (Mel Gorman) wrote:
> > build_zonelists() attempts to be smart, and uses highest_zone() so that it
> > doesn't attempt to call build_zonelists_node() for empty zones. However,
> > build_zonelists_node() is smart enough to do the right thing by itself and
> > build_zonelists() already has the zone index that highest_zone() is meant
> > to provide. So, remove the unnecessary function highest_zone().
>
> Dave, Andy: could you please have a think about the fallback list thing?
It's bogus. Mel, I didn't take a close enough look when we were talking
about it earlier, and I fear I led you astray. I misunderstood what it
was trying to do, and though that the zone_populated() check replaced
the highest_zone() check, when they actually do completely different
things.
highest_zone(zone_nr) actually means, given these "zone_bits" (which is
actually a set of __GFP_XXXX flags), what is the highest zone number
that we could possibly use to satisfy an allocation with those __GFP
flags.
We can't just get rid of it. If we do, we might put a highmem zone in
the fallback list for a normal zone. Badness.
So, Mel, I have couple of patches that I put together that the two
copies of build_zonelists(), and move some of build_zonelists() itself
down into build_zonelists_node(), including the highest_zone() call.
They're no good to you by themselves. But, I think we can make a little
function to go into the loop in build_zonelists_node(). The new
function would ask, "can this zone be used to satisfy this GFP mask?"
We'd start the loop at the absolutely highest-numbered zone. I think
that's a decently clean way to do what you want with the reclaim zone.
In the process of investigating this, I noticed that Andy's nice
calculation and comment for GFP_ZONETYPES went away. Might be nice to
put it back, just so we know how '5' got there:
http://www.kernel.org/git/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=ac3461ad632e86e7debd871776683c05ef3ba4c6
Mel, you might also want to take a look at what Linus is suggesting
there.
-- Dave
WARNING: multiple messages have this Message-ID (diff)
From: Dave Hansen <haveblue@us.ibm.com>
To: Andrew Morton <akpm@osdl.org>
Cc: Mel Gorman <mel@csn.ul.ie>,
lhms-devel@lists.sourceforge.net, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, Andy Whitcroft <apw@shadowen.org>,
Linus Torvalds <torvalds@osdl.org>
Subject: Re: [PATCH] BUG: gfp_zone() not mapping zone modifiers correctly and bad ordering of fallback lists
Date: Fri, 13 Jan 2006 18:24:44 -0800 [thread overview]
Message-ID: <1137205485.7130.81.camel@localhost.localdomain> (raw)
In-Reply-To: <20060113121652.114941a3.akpm@osdl.org>
On Fri, 2006-01-13 at 12:16 -0800, Andrew Morton wrote:
> mel@csn.ul.ie (Mel Gorman) wrote:
> > build_zonelists() attempts to be smart, and uses highest_zone() so that it
> > doesn't attempt to call build_zonelists_node() for empty zones. However,
> > build_zonelists_node() is smart enough to do the right thing by itself and
> > build_zonelists() already has the zone index that highest_zone() is meant
> > to provide. So, remove the unnecessary function highest_zone().
>
> Dave, Andy: could you please have a think about the fallback list thing?
It's bogus. Mel, I didn't take a close enough look when we were talking
about it earlier, and I fear I led you astray. I misunderstood what it
was trying to do, and though that the zone_populated() check replaced
the highest_zone() check, when they actually do completely different
things.
highest_zone(zone_nr) actually means, given these "zone_bits" (which is
actually a set of __GFP_XXXX flags), what is the highest zone number
that we could possibly use to satisfy an allocation with those __GFP
flags.
We can't just get rid of it. If we do, we might put a highmem zone in
the fallback list for a normal zone. Badness.
So, Mel, I have couple of patches that I put together that the two
copies of build_zonelists(), and move some of build_zonelists() itself
down into build_zonelists_node(), including the highest_zone() call.
They're no good to you by themselves. But, I think we can make a little
function to go into the loop in build_zonelists_node(). The new
function would ask, "can this zone be used to satisfy this GFP mask?"
We'd start the loop at the absolutely highest-numbered zone. I think
that's a decently clean way to do what you want with the reclaim zone.
In the process of investigating this, I noticed that Andy's nice
calculation and comment for GFP_ZONETYPES went away. Might be nice to
put it back, just so we know how '5' got there:
http://www.kernel.org/git/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=ac3461ad632e86e7debd871776683c05ef3ba4c6
Mel, you might also want to take a look at what Linus is suggesting
there.
-- Dave
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2006-01-14 2:25 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-13 15:50 [PATCH] BUG: gfp_zone() not mapping zone modifiers correctly and bad ordering of fallback lists Mel Gorman
2006-01-13 15:50 ` Mel Gorman
2006-01-13 18:13 ` Mika Penttilä
2006-01-13 18:13 ` Mika Penttilä
2006-01-15 14:00 ` Mel Gorman
2006-01-15 14:00 ` Mel Gorman
2006-01-13 20:16 ` Andrew Morton
2006-01-13 20:16 ` Andrew Morton
2006-01-14 2:24 ` Dave Hansen [this message]
2006-01-14 2:24 ` Dave Hansen
2006-01-14 18:29 ` Mel Gorman
2006-01-14 18:29 ` Mel Gorman
2006-01-19 21:52 ` [PATCH 1/2] GFP_ZONETYPES add commentry on how to calculate Andy Whitcroft
2006-01-19 21:52 ` Andy Whitcroft
2006-01-19 21:52 ` [PATCH 2/2] GFP_ZONETYPES calculate from GFP_ZONEMASK Andy Whitcroft
2006-01-19 21:52 ` Andy Whitcroft
2006-01-16 15:57 ` [PATCH] BUG: gfp_zone() not mapping zone modifiers correctly and bad ordering of fallback lists Andy Whitcroft
2006-01-16 15:57 ` Andy Whitcroft
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1137205485.7130.81.camel@localhost.localdomain \
--to=haveblue@us.ibm.com \
--cc=akpm@osdl.org \
--cc=apw@shadowen.org \
--cc=lhms-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mel@csn.ul.ie \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.