Linux 6.10 Scheduler Changes Bring More Refinements
Alongside all of the other pull requests by Ingo Molnar submitted at the start of the week during the opening of the Linux 6.10 merge window were the scheduler updates. As usual, the kernel scheduler work continues to see various tweaks and refinements to enhance its behavior.
With Linux 6.10 the code now has CPUFreq pressure feedback available to the scheduler. There's also a rework for misfit load balancing around affinity restrictions. Plus a variety of code clean-ups and other low-level alterations.
The change to misfit load balancing is around checking that a task has a fitting CPU when updating the misfit. The patch by Arm's Qais Yousef explains:
See more details on the scheduler changes for Linux 6.10 via the pull request that has already been merged to mainline.
With Linux 6.10 the code now has CPUFreq pressure feedback available to the scheduler. There's also a rework for misfit load balancing around affinity restrictions. Plus a variety of code clean-ups and other low-level alterations.
The change to misfit load balancing is around checking that a task has a fitting CPU when updating the misfit. The patch by Arm's Qais Yousef explains:
"If a misfit task is affined to a subset of the possible cpus, we need to verify that one of these cpus can fit it. Otherwise the load balancer code will continuously trigger needlessly leading the balance_interval to increase in return and eventually end up with a situation where real imbalances take a long time to address because of this impossible imbalance situation.
This can happen in Android world where it's common for background tasks to be restricted to little cores.
Similarly if we can't fit the biggest core, triggering misfit is pointless as it is the best we can ever get on this system.
To speed the search up, don't call task_fits_cpu() which will repeatedly call uclamp_eff_value() for the same task. Call util_fits_cpu() instead. And only do so when we see a cpu with higher capacity level than passed cpu_of(rq)."
See more details on the scheduler changes for Linux 6.10 via the pull request that has already been merged to mainline.
7 Comments