sched: Consider spare cpu capacity at task wake-up
authorMorten Rasmussen <morten.rasmussen@arm.com>
Mon, 6 Jul 2015 14:01:10 +0000 (15:01 +0100)
committerLeo Yan <leo.yan@linaro.org>
Tue, 10 May 2016 08:49:49 +0000 (16:49 +0800)
commit8a5c0339bb7b7eedd2e75b62ebe4144a195f7ef3
tree3fb240d0397955c5b062486ffaf04ff2559332e3
parente8bcb272bc920d875c26ca2e06c872b9f844f6f1
sched: Consider spare cpu capacity at task wake-up

find_idlest_group() selects the wake-up target group purely
based on group load which leads to suboptimal choices in low load
scenarios. An idle group with reduced capacity (due to RT tasks or
different cpu type) isn't necessarily a better target than a lightly
loaded group with higher capacity.

The patch adds spare capacity as an additional group selection
parameter. The target group is now selected based on the following
criteria:

1. Return the group with the cpu with most spare capacity and this
capacity is significant if such group exists. Significant spare capacity
is currently at least 20% to spare.

2. Return the group with the lowest load, unless it is the local group
in which case NULL is returned and the search is continued at the next
(lower) level.

cc: Ingo Molnar <mingo@redhat.com>
cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Morten Rasmussen <morten.rasmussen@arm.com>
kernel/sched/fair.c