Intel Making Cluster Scheduling Configurable, Disabled For Alder Lake Hybrid CPUs
Added to the in-development Linux 5.16 kernel was cluster-aware scheduling designed to enhance system performance where groups of CPU cores may share caches or similar and thus the scheduler could benefit from knowing that information for making more optimal task placement. But as I pointed out early on with Linux 5.16, this cluster scheduling is hurting the Intel Alder Lake performance on the new kernel. Intel is now working to correct this by making the cluster scheduling configurable and disabling this functionality by default for hybrid CPUs such as Alder Lake.
With the x86 cluster scheduling being enabled by default, when moving from Linux 5.15 to the current Linux 5.16 code it can lead to significant performance regressions as outlined in last month's regression hunt. Basically the cluster-aware scheduling doesn't take into account the P cores vs. E cores and so making ill-informed decisions for scheduling. Separately, merged last week was also a fix for Alder Lake on Linux around the ITMT handling that is also important if you are an early Intel 12th Gen Core customer.
With the new patches sent out on Friday, what is important for Alder Lake users is this patch. This will default to disabling cluster scheduling for x86 hybrid CPUs such as Alder Lake. "For x86 hybrid CPUs like Alder Lake, the order of CPU selection should be based strictly on CPU priority. Turn off cluster scheduling to avoid interference with such CPU selection order."
The rest of the new patch series makes the cluster scheduling configurable at boot-time or even run-time. For a fully-utilized system/server and other cases where it is desirable to disable this behavior and avoid the scheduling overhead and potentially bad choices, this patch series is useful.
These patches haven't been merged to mainline (though hopefully will soon considering it ultimately amounts to a regression fix) but with the change to disable cluster scheduling by default for Alder Lake should return the likes of the i5-12600K and i9-12900K to performing well on Linux 5.16... I'll have up new benchmarks shortly to confirm where things stand.
With the x86 cluster scheduling being enabled by default, when moving from Linux 5.15 to the current Linux 5.16 code it can lead to significant performance regressions as outlined in last month's regression hunt. Basically the cluster-aware scheduling doesn't take into account the P cores vs. E cores and so making ill-informed decisions for scheduling. Separately, merged last week was also a fix for Alder Lake on Linux around the ITMT handling that is also important if you are an early Intel 12th Gen Core customer.
With the new patches sent out on Friday, what is important for Alder Lake users is this patch. This will default to disabling cluster scheduling for x86 hybrid CPUs such as Alder Lake. "For x86 hybrid CPUs like Alder Lake, the order of CPU selection should be based strictly on CPU priority. Turn off cluster scheduling to avoid interference with such CPU selection order."
The rest of the new patch series makes the cluster scheduling configurable at boot-time or even run-time. For a fully-utilized system/server and other cases where it is desirable to disable this behavior and avoid the scheduling overhead and potentially bad choices, this patch series is useful.
These patches haven't been merged to mainline (though hopefully will soon considering it ultimately amounts to a regression fix) but with the change to disable cluster scheduling by default for Alder Lake should return the likes of the i5-12600K and i9-12900K to performing well on Linux 5.16... I'll have up new benchmarks shortly to confirm where things stand.
4 Comments