Re: [PATCH] mm: Only re-generate demotion targets when a numa node changes its N_CPU state

From: Andrew Morton
Date: Wed Mar 09 2022 - 16:03:02 EST


On Wed, 9 Mar 2022 15:46:44 +0100 Oscar Salvador <osalvador@xxxxxxx> wrote:

> Abhishek reported that after patch [1], hotplug operations are
> taking ~double the expected time. [2]
>
> The reason behind is that the CPU callbacks that migrate_on_reclaim_init()
> sets always call set_migration_target_nodes() whenever a CPU is brought
> up/down.
> But we only care about numa nodes going from having cpus to become
> cpuless, and vice versa, as that influences the demotion_target order.
>
> We do already have two CPU callbacks (vmstat_cpu_online() and vmstat_cpu_dead())
> that check exactly that, so get rid of the CPU callbacks in
> migrate_on_reclaim_init() and only call set_migration_target_nodes() from
> vmstat_cpu_{dead,online}() whenever a numa node change its N_CPU state.
>
> [1] https://lore.kernel.org/linux-mm/20210721063926.3024591-2-ying.huang@xxxxxxxxx/
> [2] https://lore.kernel.org/linux-mm/eb438ddd-2919-73d4-bd9f-b7eecdd9577a@xxxxxxxxxxxxxxxxxx/
>
> ...
>
> extern bool numa_demotion_enabled;
> +#ifdef CONFIG_HOTPLUG_CPU
> +extern void set_migration_target_nodes(void);
> +#else
> +static inline void set_migration_target_nodes() {}

Compiler won't like that. Please test (compile and runtime) with
CONFIG_HOTPLUG_CPU=n.

>
> ...
>