Cluster Scheduler Support Queued Ahead Of Linux 5.16
Cluster scheduler support has been queued up for landing in the Linux 5.16 kernel for AArch64 and x86_64 systems for improving the CPU scheduler behavior for systems that have clusters of CPU cores.
The cluster scheduler support in this context is about enhancing the Linux kernel's scheduler for systems where sets of CPU cores share an L2 cache or other mid-level caches/resources.
This cluster scheduler work stems from work by HiSilicon and Huawei aiming to improve the Linux performance for the Kunpeng 920 server chip. That HiSilicon SoC has six or eight clusters per NUMA node with four CPU cores per cluster and a shared L3 cache. With the cluster scheduler patches they were able to enhance the overall performance of the system and also improve the efficiency.
While started as ARM/AArch64 work, the cluster scheduler code was also already adapted for x86_64 systems too. In particular Intel got the cluster scheduler level added for hardware like their Jacobsville family where the L2 cache is shared among a cluster of cores. Intel's own testing with Jacobsville showed up to a 25% improvement with the load being better balanced between L2 clusters. Intel was testing with SPECrate's MCF test while acknowledging not all workloads will benefit from this cluster scheduler work.
On the ARM side there were Stream memory benchmark improvements up to 19%, PBZIP2 performance by up to 8%, PIXZ performance up to a few percent, and also a number of SPECrate wins.
The cluster scheduler work was picked up today via sched/core with the topology changes, cluster scheduler for ARM64, and the x86 cluster scheduler level.
Now that the work was picked up in sched/core, it should debut in mainline once the Linux 5.16 merge window opens in November. The support is nestled behind a new SCHED_CLUSTER Kconfig switch on x86/x86_64 and ARM64.