2012-08-20 08:03:29

by Charles Wang

[permalink] [raw]
Subject: [PATCH] sched: add missing call for calc_load_exit_idle

>From Charles Wang <[email protected]>

Azat Khuzhin reported "high loadavg in linux-3.6"

After checking for upstream's code, I found Peter's patch
(Commit id:5167e8d5417bf5c322a703d2927daec727ea40dd) not be
fully applied, missing the call for calc_load_exit_idle.
After that idle exit in sampling window will always be calculated
to non-idle, and the load will be higher than normal.

This patch add the missing call for calc_load_exit_idle.

Signed-off-by: Charles Wang <[email protected]>

diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index 024540f..3a9e5d5 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -573,6 +573,7 @@ static void tick_nohz_restart_sched_tick(struct tick_sched *ts, ktime_t now)
tick_do_update_jiffies64(now);
update_cpu_load_nohz();

+ calc_load_exit_idle();
touch_softlockup_watchdog();
/*
* Cancel the scheduled timer and restore the tick
--
1.7.9.5


2012-08-20 08:13:42

by Charles Wang

[permalink] [raw]
Subject: Re: [PATCH] sched: add missing call for calc_load_exit_idle

No email address provided by Azat Khuzhin, so I don't know
how to let him know this. - -!

On 08/20/2012 04:02 PM, Charles Wang wrote:
> From Charles Wang <[email protected]>
>
> Azat Khuzhin reported "high loadavg in linux-3.6"
>
> After checking for upstream's code, I found Peter's patch
> (Commit id:5167e8d5417bf5c322a703d2927daec727ea40dd) not be
> fully applied, missing the call for calc_load_exit_idle.
> After that idle exit in sampling window will always be calculated
> to non-idle, and the load will be higher than normal.
>
> This patch add the missing call for calc_load_exit_idle.
>
> Signed-off-by: Charles Wang <[email protected]>
>
> diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
> index 024540f..3a9e5d5 100644
> --- a/kernel/time/tick-sched.c
> +++ b/kernel/time/tick-sched.c
> @@ -573,6 +573,7 @@ static void tick_nohz_restart_sched_tick(struct tick_sched *ts, ktime_t now)
> tick_do_update_jiffies64(now);
> update_cpu_load_nohz();
>
> + calc_load_exit_idle();
> touch_softlockup_watchdog();
> /*
> * Cancel the scheduled timer and restore the tick
>

2012-08-20 08:39:40

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] sched: add missing call for calc_load_exit_idle

On Mon, 2012-08-20 at 16:02 +0800, Charles Wang wrote:
> From Charles Wang <[email protected]>
>
> Azat Khuzhin reported "high loadavg in linux-3.6"
>
> After checking for upstream's code, I found Peter's patch
> (Commit id:5167e8d5417bf5c322a703d2927daec727ea40dd) not be
> fully applied, missing the call for calc_load_exit_idle.
> After that idle exit in sampling window will always be calculated
> to non-idle, and the load will be higher than normal.
>
> This patch add the missing call for calc_load_exit_idle.
>
> Signed-off-by: Charles Wang <[email protected]>

Argh! how the @#$# did that happen..

Thanks for spotting it.