Frederic, Would you like to give some comments on this patch?
Best Regard!
On 11/21/2013 01:45 PM, Alex Shi wrote:
When a nohz_full cpu in tickless mode, it may update cpu_load in following chain: __tick_nohz_full_check tick_nohz_restart_sched_tick update_cpu_load_nohz then it will be set a incorrect cpu_load: 0. This patch try to fix it and give it the correct cpu_load value.
Signed-off-by: Alex Shi alex.shi@linaro.org
kernel/sched/proc.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/kernel/sched/proc.c b/kernel/sched/proc.c index 057bb9b..5058e6a 100644 --- a/kernel/sched/proc.c +++ b/kernel/sched/proc.c @@ -477,10 +477,16 @@ void update_cpu_load_nohz(void) if (pending_updates) { this_rq->last_load_update_tick = curr_jiffies; /*
* We were idle, this means load 0, the current load might be
* !0 due to remote wakeups and the sort.
* We may has one task and in NO_HZ_FULL, then use normal
* cfs load.
* Or we were idle, this means load 0, the current load might
*/* be !0 due to remote wakeups and the sort.
__update_cpu_load(this_rq, 0);
if (this_rq->cfs.h_nr_running) {
unsigned load = get_rq_runnable_load(this_rq);
__update_cpu_load(this_rq, load);
} else
} raw_spin_unlock(&this_rq->lock);__update_cpu_load(this_rq, 0);
}