Re: [RFC 0/6] mm: improve page allocator scalability via splitting zones

From: Michal Hocko
Date: Thu May 11 2023 - 11:05:59 EST


On Thu 11-05-23 14:56:01, Huang Ying wrote:
> The patchset is based on upstream v6.3.
>
> More and more cores are put in one physical CPU (usually one NUMA node
> too). In 2023, one high-end server CPU has 56, 64, or more cores.
> Even more cores per physical CPU are planned for future CPUs. While
> all cores in one physical CPU will contend for the page allocation on
> one zone in most cases. This causes heavy zone lock contention in
> some workloads. And the situation will become worse and worse in the
> future.
>
> For example, on an 2-socket Intel server machine with 224 logical
> CPUs, if the kernel is built with `make -j224`, the zone lock
> contention cycles% can reach up to about 12.7%.
>
> To improve the scalability of the page allocation, in this series, we
> will create one zone instance for each about 256 GB memory of a zone
> type generally. That is, one large zone type will be split into
> multiple zone instances. Then, different logical CPUs will prefer
> different zone instances based on the logical CPU No. So the total
> number of logical CPUs contend on one zone will be reduced. Thus the
> scalability is improved.

It is not really clear to me why you need a new zone for all this rather
than partition free lists internally within the zone? Essentially to
increase the current two level system to 3: per cpu caches, per cpu
arenas and global fallback.

I am also missing some information why pcp caches tunning is not
sufficient.
--
Michal Hocko
SUSE Labs