In order to further optimise the Linux kernel scheduler code for Intel hybrid CPUs, Intel developer Ricardo Neri released a set of four changes on Thursday. The new research is focused on preventing pointless migrations inside SMT domains. He clarified the patch series by saying:
Since Intel unveiled the 12th Gen Core “Alder Lake” processors last year, a number of patches have been released to improve the Linux kernel’s scheduler and other code to handle the combination of performance and efficient cores. While issue had appeared to be resolved for a while, with Alder Lake CPUs running well on Linux, another patch series was released to further modify the Linux sched/fair code to assist with these Intel hybrid processor designs.
Highlights
-
This results in unnecessary task migrations within the SMT domains.
-
Intel processors that support Intel Turbo Boost Max 3.0 use asym_packing to assign higher priorities to CPUs with higher maximum frequencies. It artificially assigns, however, a lower priority to the higher-numbered SMT siblings to ensure that they are used last.
Do not use different priorities for each SMT sibling. Instead, tweak the asym_packing load balancer to recognize SMT cores with more than one busy sibling and let lower-priority CPUs pull tasks.
On processors with a mixture of higher-frequency SMT cores and lower-frequency non-SMT cores (such as Intel hybrid processors), a lower-priority CPU pulls tasks from the higher-priority cores if more than one SMT sibling is busy.
Removing these artificial priorities avoids superfluous migrations and lets lower-priority cores inspect all SMT siblings for the busiest queue.
As part of this sched/fair patch series, no benchmarks or performance predictions were made, but given that the current kernel behaviour may cause E cores to take tasks away from P cores, this may have a significant impact on some aspects of Alder Lake performance as well as future Intel hybrid processors like the upcoming Raptor Lake.
Naturally, I’ll be available with some recent Intel Linux benchmarks once these new patches are prepared for the mainline kernel to assess the effects of these most recent scheduler modifications.