From 7ab48e4c8d9e0652bd978f3df26c29e64b5ea85a Mon Sep 17 00:00:00 2001 From: Joonwoo Park Date: Fri, 21 Oct 2016 13:39:31 -0700 Subject: [PATCH] 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 [markivx: Reworked the commit text a bit] Signed-off-by: Vikram Mulukutla --- kernel/sched/fair.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 0f43ece69e8c..d7bea4761a55 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -8863,6 +8863,7 @@ static int need_active_balance(struct lb_env *env) } 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 && cpu_overutilized(env->src_cpu) && !cpu_overutilized(env->dst_cpu)) {