aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Guittot <vincent.guittot@linaro.org>2014-12-12 11:25:03 +0100
committerVincent Guittot <vincent.guittot@linaro.org>2014-12-16 15:41:04 +0100
commit5f74d508f3f5edfe91ccb7437c139928a79db4f7 (patch)
treece73e0bbfd0e89e1ecf92f22bbb490600e858b10
parent3ac2b6a05c915770c8bb9c84e4b201754ebd5c24 (diff)
sched: fix load tracking
ensure periodic update of blocked load of idle cores
-rw-r--r--kernel/sched/fair.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index b34746d776a9..114af01c4a2e 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -5721,6 +5721,14 @@ static unsigned long task_h_load(struct task_struct *p)
#else
static inline void update_blocked_averages(int cpu)
{
+ struct rq *rq = cpu_rq(cpu);
+ unsigned long flags;
+
+ raw_spin_lock_irqsave(&rq->lock, flags);
+ update_rq_clock(rq);
+ update_rq_runnable_avg(rq, rq->nr_running);
+ update_cfs_rq_blocked_load(&rq->cfs, 1);
+ raw_spin_unlock_irqrestore(&rq->lock, flags);
}
static unsigned long task_h_load(struct task_struct *p)