[PATCH 0/6] make memblock allocator utilize the node's fallback info

From: Pingfan Liu
Date: Sun Feb 24 2019 - 07:34:31 EST


There are NUMA machines with memory-less node. At present page allocator builds the
full fallback info by build_zonelists(). But memblock allocator does not utilize
this info. And for memory-less node, memblock allocator just falls back "node 0",
without utilizing the nearest node. Unfortunately, the percpu section is allocated
by memblock, which is accessed frequently after bootup.

This series aims to improve the performance of per cpu section on memory-less node
by feeding node's fallback info to memblock allocator on x86, like we do for page
allocator. On other archs, it requires independent effort to setup node to cpumask
map ahead.


CC: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
CC: Ingo Molnar <mingo@xxxxxxxxxx>
CC: Borislav Petkov <bp@xxxxxxxxx>
CC: "H. Peter Anvin" <hpa@xxxxxxxxx>
CC: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
CC: Vlastimil Babka <vbabka@xxxxxxx>
CC: Mike Rapoport <rppt@xxxxxxxxxxxxxxxxxx>
CC: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
CC: Mel Gorman <mgorman@xxxxxxx>
CC: Joonsoo Kim <iamjoonsoo.kim@xxxxxxx>
CC: Andy Lutomirski <luto@xxxxxxxxxx>
CC: Andi Kleen <ak@xxxxxxxxxxxxxxx>
CC: Petr Tesarik <ptesarik@xxxxxxx>
CC: Michal Hocko <mhocko@xxxxxxxx>
CC: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
CC: Jonathan Corbet <corbet@xxxxxxx>
CC: Nicholas Piggin <npiggin@xxxxxxxxx>
CC: Daniel Vacek <neelx@xxxxxxxxxx>
CC: linux-kernel@xxxxxxxxxxxxxxx

Pingfan Liu (6):
mm/numa: extract the code of building node fall back list
mm/memblock: make full utilization of numa info
x86/numa: define numa_init_array() conditional on CONFIG_NUMA
x86/numa: concentrate the code of setting cpu to node map
x86/numa: push forward the setup of node to cpumask map
x86/numa: build node fallback info after setting up node to cpumask
map

arch/x86/include/asm/topology.h | 4 ---
arch/x86/kernel/setup.c | 2 ++
arch/x86/kernel/setup_percpu.c | 3 --
arch/x86/mm/numa.c | 40 +++++++++++-------------
include/linux/memblock.h | 3 ++
mm/memblock.c | 68 ++++++++++++++++++++++++++++++++++++++---
mm/page_alloc.c | 48 +++++++++++++++++------------
7 files changed, 114 insertions(+), 54 deletions(-)

--
2.7.4