Re: [PATCH] mm/page_alloc: return 0 in case this node has no page within the zone

From: Michal Hocko
Date: Tue Feb 07 2017 - 10:41:27 EST


On Tue 07-02-17 23:32:47, Wei Yang wrote:
> On Tue, Feb 07, 2017 at 10:45:57AM +0100, Michal Hocko wrote:
[...]
> >Is there any reason why for_each_mem_pfn_range cannot be changed to
> >honor the given start/end pfns instead? I can imagine that a small zone
> >would see a similar pointless iterations...
> >
>
> Hmm... No special reason, just not thought about this implementation. And
> actually I just do the similar thing as in zone_spanned_pages_in_node(), in
> which also return 0 when there is no overlap.
>
> BTW, I don't get your point. You wish to put the check in
> for_each_mem_pfn_range() definition?

My point was that you are handling one special case (an empty zone) but
the underlying problem is that __absent_pages_in_range might be wasting
cycles iterating over memblocks that are way outside of the given pfn
range. At least this is my understanding. If you fix that you do not
need the special case, right?
--
Michal Hocko
SUSE Labs