On Mon, Nov 12, 2018 at 09:09:26AM +0100, Michal Hocko wrote: >On Mon 12-11-18 15:14:04, Wei Yang wrote: >> Zone with no managed_pages doesn't contribute totalreserv_pages. And the >> more nodes we have, the more empty zones there are. >> >> This patch skip the zones to save some cycles. > >What is the motivation for the patch? Does it really cause any >measurable difference in performance? > The motivation here is to reduce some unnecessary work. Based on my understanding, almost every node has empty zones, since zones within a node are ordered in monotonic increasing memory address. The worst case is all zones has managed_pages. For example, there is only one node, or configured to have only ZONE_NORMAL and ZONE_MOVABLE. Otherwise, the more node/zone we have, the more empty zones there are. I didn't have detail tests on this patch, since I don't have machine with large numa nodes. While compared with the following ten lines of code, this check to skip them is worthwhile to me. >> Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx> >> --- >> mm/page_alloc.c | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/mm/page_alloc.c b/mm/page_alloc.c >> index a919ba5cb3c8..567de15e1106 100644 >> --- a/mm/page_alloc.c >> +++ b/mm/page_alloc.c >> @@ -7246,6 +7246,9 @@ static void calculate_totalreserve_pages(void) >> struct zone *zone = pgdat->node_zones + i; >> long max = 0; >> >> + if (!managed_zone(zone)) >> + continue; >> + >> /* Find valid and maximum lowmem_reserve in the zone */ >> for (j = i; j < MAX_NR_ZONES; j++) { >> if (zone->lowmem_reserve[j] > max) >> -- >> 2.15.1 >> > >-- >Michal Hocko >SUSE Labs -- Wei Yang Help you, Help me