summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Lezcano <daniel.lezcano@linaro.org>2015-10-16 14:11:30 +0200
committerDaniel Lezcano <daniel.lezcano@linaro.org>2015-11-05 11:02:59 +0100
commitf4bff2d4622aceefb8a0739abd9797bfffff0135 (patch)
tree9b2b35d0a967f3916402e1bfe777127e83918970
parentce062223ad4ad74cf671497a154bcc3c3083b249 (diff)
sched/fair: Prevent to break the target residency
This change aggressively try to save energy by preventing the balance to choose an idle cpu which did not reach its target residency. Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
-rw-r--r--kernel/sched/fair.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index bcb51eb901eb..d99654496d4b 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -4742,8 +4742,10 @@ find_idlest_cpu(struct sched_group *group, struct task_struct *p, int this_cpu)
if (idle_cpu(i)) {
struct rq *rq = cpu_rq(i);
struct cpuidle_state *idle = idle_get_state(rq);
+ u64 now = ktime_to_us(ktime_get());
+
+ if (idle && ((idle->idle_stamp + now) > idle->target_residency)) {
- if (idle) {
if (idle->exit_latency < min_exit_latency) {
/*
* We give priority to a CPU