diff options
author | Con Kolivas <kernel@kolivas.org> | 2016-10-28 08:50:32 +1100 |
---|---|---|
committer | Con Kolivas <kernel@kolivas.org> | 2016-10-28 08:50:32 +1100 |
commit | 7ac11cf6e3aa5646bf3d1c4ec8f13f69e4593e52 (patch) | |
tree | 4c10c13bf108ee564e14e024ef681cbb374c1b5c /kernel/sched | |
parent | eb53ae396a1b7c97563744657a458dd029ec7ca3 (diff) |
Use niffies in update load avg and include iowait in load.
Diffstat (limited to 'kernel/sched')
-rw-r--r-- | kernel/sched/MuQSS.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/kernel/sched/MuQSS.c b/kernel/sched/MuQSS.c index 40e047013f2e..eadd6f6263a5 100644 --- a/kernel/sched/MuQSS.c +++ b/kernel/sched/MuQSS.c @@ -866,10 +866,9 @@ static inline bool rq_local(struct rq *rq); */ static void update_load_avg(struct rq *rq) { - /* rq clock can go backwards so skip update if that happens */ - if (likely(rq->clock > rq->load_update)) { - unsigned long us_interval = (rq->clock - rq->load_update) >> 10; - long load, curload = rq_load(rq); + if (likely(rq->niffies > rq->load_update)) { + unsigned long us_interval = NS_TO_US(rq->niffies - rq->load_update); + long load, curload = rq_load(rq) + atomic_read(&rq->nr_iowait); load = rq->load_avg - (rq->load_avg * us_interval * 5 / 262144); if (unlikely(load < 0)) @@ -879,7 +878,7 @@ static void update_load_avg(struct rq *rq) } else return; - rq->load_update = rq->clock; + rq->load_update = rq->niffies; if (likely(rq_local(rq))) cpufreq_trigger(rq->niffies, rq->load_avg); } |