Re: [PATCH] mm/page_alloc: return 0 in case this node has no page within the zone
From: Michal Hocko <mhocko@kernel.org>
Date: 2017-02-07 09:46:02
Also in:
lkml
On Mon 06-02-17 23:43:14, Wei Yang wrote:
The whole memory space is divided into several zones and nodes may have no page in some zones. In this case, the __absent_pages_in_range() would return 0, since the range it is searching for is an empty range. Also this happens more often to those nodes with higher memory range when there are more nodes, which is a trend for future architectures.
I do not understand this part. Why would we see more zones with zero pfn range in higher memory ranges.
This patch checks the zone range after clamp and adjustment, return 0 if the range is an empty range.
I assume the whole point of this patch is to save __absent_pages_in_range which iterates over all memblock regions, right? 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...
quoted hunk ↗ jump to hunk
Signed-off-by: Wei Yang <redacted> --- mm/page_alloc.c | 5 +++++ 1 file changed, 5 insertions(+)diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 6de9440e3ae2..51c60c0eadcb 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c@@ -5521,6 +5521,11 @@ static unsigned long __meminit zone_absent_pages_in_node(int nid, adjust_zone_range_for_zone_movable(nid, zone_type, node_start_pfn, node_end_pfn, &zone_start_pfn, &zone_end_pfn); + + /* If this node has no page within this zone, return 0. */ + if (zone_start_pfn == zone_end_pfn) + return 0; + nr_absent = __absent_pages_in_range(nid, zone_start_pfn, zone_end_pfn); /*-- 2.11.0 -- 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>
-- Michal Hocko SUSE Labs -- 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>