Cluster-Aware Scheduling Lands In Linux 5.16
The "sched/core" scheduler updates landed on Monday into the Linux 5.16 kernel. Notable this pull request is the cluster-aware scheduling support.
The cluster scheduler support new to Linux 5.16 allows for enhancing the CPU scheduler's behavior for x86_64 and AArch64 having clusters of CPU cores that share an L2 cache or other mid-level resources.
The work was started to improve select 64-bit ARM SoCs like the Kunpeng 920 server chip with clusters of cores sharing an L3 cache. With the scheduler aware of the cluster topology it was able to make better scheduling decisions that improved the overall performance and efficiency of the system.
This initial cluster-aware scheduling code also has seen some initial Intel x86_64 support with a focus on Jacobsville where an L2 cache is shared among a cluster of cores. The scheduler changes there were able to yield up to a 25% improvement with better balancing between clusters with different L2 caches. More details on this support within the aforelinked article. For those wondering about AMD benefits, at least when trying out the code when initially queued into sched/core, it wasn't yet able to map any cluster/CCX layouts on Zen 3 chips.
In addition to the cluster-aware scheduling work, there is also improved idle balancing in general, tweaks around the real-time (RT) code, proper interfaces for live-patching, and other enhancements.
The full set of scheduler patches for the Linux 5.16 cycle can be found via this pull request that is already in the mainline tree.
The cluster scheduler support new to Linux 5.16 allows for enhancing the CPU scheduler's behavior for x86_64 and AArch64 having clusters of CPU cores that share an L2 cache or other mid-level resources.
The work was started to improve select 64-bit ARM SoCs like the Kunpeng 920 server chip with clusters of cores sharing an L3 cache. With the scheduler aware of the cluster topology it was able to make better scheduling decisions that improved the overall performance and efficiency of the system.
This initial cluster-aware scheduling code also has seen some initial Intel x86_64 support with a focus on Jacobsville where an L2 cache is shared among a cluster of cores. The scheduler changes there were able to yield up to a 25% improvement with better balancing between clusters with different L2 caches. More details on this support within the aforelinked article. For those wondering about AMD benefits, at least when trying out the code when initially queued into sched/core, it wasn't yet able to map any cluster/CCX layouts on Zen 3 chips.
In addition to the cluster-aware scheduling work, there is also improved idle balancing in general, tweaks around the real-time (RT) code, proper interfaces for live-patching, and other enhancements.
The full set of scheduler patches for the Linux 5.16 cycle can be found via this pull request that is already in the mainline tree.
12 Comments