diff options
author | Daniel Lezcano <daniel.lezcano@linaro.org> | 2015-10-16 14:11:30 +0200 |
---|---|---|
committer | Daniel Lezcano <daniel.lezcano@linaro.org> | 2015-11-05 11:02:59 +0100 |
commit | f4bff2d4622aceefb8a0739abd9797bfffff0135 (patch) | |
tree | 9b2b35d0a967f3916402e1bfe777127e83918970 | |
parent | ce062223ad4ad74cf671497a154bcc3c3083b249 (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.c | 4 |
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 |