On Tue, 30 Sep 2014, Rik van Riel wrote:
On 09/04/2014 11:32 AM, Nicolas Pitre wrote:
The code in find_idlest_cpu() looks for the CPU with the smallest load. However, if multiple CPUs are idle, the first idle CPU is selected irrespective of the depth of its idle state.
Among the idle CPUs we should pick the one with with the shallowest idle state, or the latest to have gone idle if all idle CPUs are in the same state. The later applies even when cpuidle is configured out.
This patch doesn't cover the following issues:
The main thing it does not cover is already running tasks that get woken up again, since select_idle_sibling() covers everything except for newly forked and newly executed tasks.
True. Now that you bring this up, I remember that Peter mentioned it as well.
I am looking at adding similar logic to select_idle_sibling()
OK thanks.
Nicolas