sched/fair: prevent meaningless active migration

At present need_active_balance() determines whether an active
upmigration is needed by using capacity_of(). A CPU's capacity
may be reduced by RT pressure, and therefore distinguishing
capability differences with capacity_of() may lead to suboptimal
active migrations to less capable CPUs. Use capacity_orig_of
to distinguish differently capable CPUs in addition to
capacity_of(), thus avoiding placing tasks on less capable CPUs
due to instantaneous RT pressure.

Change-Id: I3e1435246a8edc3ad618ef98a34866cfbd8c16a5
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
[markivx: Reworked the commit text a bit]
Signed-off-by: Vikram Mulukutla <markivx@codeaurora.org>
This commit is contained in:
Joonwoo Park 2016-10-21 13:39:31 -07:00 committed by Joel Fernandes
parent be832f69a9
commit 7ab48e4c8d

View file

@ -8863,6 +8863,7 @@ static int need_active_balance(struct lb_env *env)
} }
if ((capacity_of(env->src_cpu) < capacity_of(env->dst_cpu)) && if ((capacity_of(env->src_cpu) < capacity_of(env->dst_cpu)) &&
((capacity_orig_of(env->src_cpu) < capacity_orig_of(env->dst_cpu))) &&
env->src_rq->cfs.h_nr_running == 1 && env->src_rq->cfs.h_nr_running == 1 &&
cpu_overutilized(env->src_cpu) && cpu_overutilized(env->src_cpu) &&
!cpu_overutilized(env->dst_cpu)) { !cpu_overutilized(env->dst_cpu)) {