aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDietmar Eggemann <dietmar.eggemann@arm.com>2015-05-10 15:17:32 +0100
committerPunit Agrawal <punit.agrawal@arm.com>2016-03-21 12:34:30 +0000
commit298ee11fae708706e9c3bc9e8ae53bd2f7e2a0c2 (patch)
tree442afdc1c33eed6255c76fcee47664a2751d204d
parentee1a0a273f0f234e734cfbceb4a72df472eb5dc5 (diff)
sched: Consider a not over-utilized energy-aware system as balanced
In case the system operates below the tipping point indicator, introduced in ("sched: Add over-utilization/tipping point indicator"), bail out in find_busiest_group after the dst and src group statistics have been checked. There is simply no need to move usage around because all involved cpus still have spare cycles available. For an energy-aware system below its tipping point, we rely on the task placement of the wakeup path. This works well for short running tasks. The existence of long running tasks on one of the involved cpus lets the system operate over its tipping point. To be able to move such a task (whose load can't be used to average the load among the cpus) from a src cpu with lower capacity than the dst_cpu, an additional rule has to be implemented in need_active_balance. Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
-rw-r--r--kernel/sched/fair.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 682b4ae9ebd7..ae4f1ee9cf0c 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -7194,6 +7194,10 @@ static struct sched_group *find_busiest_group(struct lb_env *env)
* this level.
*/
update_sd_lb_stats(env, &sds);
+
+ if (energy_aware() && !env->dst_rq->rd->overutilized)
+ goto out_balanced;
+
local = &sds.local_stat;
busiest = &sds.busiest_stat;