sched: EAS: prevent excessive task packing

At present, task placement algorithm blindly selects a CPU if the task's
projected utilization fits within the CPU's capacity at current frequency
and the CPU has running task.  However this is often suboptimal and can
lead excessive task packing when :
  1) Enqueue task B onto a CPU X which has running task A.
  2) Start execution B and then task_util() increases.
  3) CPU X raises OPP.
  4) B sleeps and dequeues
  5) CPU X keeps raised OPP for reasons.
  6) New task wakes up on CPU X instead of idle CPU.

Consequently wake up placement bias towards busy CPU than idle CPU which
results in excessive wake up latency as well as unnecessary OPP
increases.

Fix such suboptimality by taking into account of projected OPP of all
the CPUs in the domain.

Change-Id: Iee692d43ac09a38953eaf3e108d93ec3331d42fc
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
1 file changed