Re: Problem with commit 31e77c93e432 "sched/fair: Update blocked load when newly idle"

From: Heiner Kallweit
Date: Sat Mar 24 2018 - 08:47:26 EST


Am 24.03.2018 um 07:46 schrieb Vincent Guittot:
> Hi Heiner,
>
> Le Friday 23 Mar 2018 Ã 22:28:09 (+0100), Heiner Kallweit a Ãcrit :
>> Recently I started to get the following problems with linux-next:
>>
>> - When working via Putty/SSH on the system the console frequently freezes
>> for few seconds. Sometimes only opening a second console makes the
>> first one react again.
>>
>> - I get "INFO: rcu_sched detected stalls on CPUs/tasks:" warnings as
>> described in [1].
>>
>> Bisecting the issue resulted in:
>>
>> 31e77c93e432dec79c7d90b888bbfc3652592741 is the first bad commit
>> commit 31e77c93e432dec79c7d90b888bbfc3652592741
>> Author: Vincent Guittot <vincent.guittot@xxxxxxxxxx>
>> Date: Wed Feb 14 16:26:46 2018 +0100
>>
>> sched/fair: Update blocked load when newly idle
>>
>> When NEWLY_IDLE load balance is not triggered, we might need to update the
>> blocked load anyway. We can kick an ilb so an idle CPU will take care of
>> updating blocked load or we can try to update them locally before entering
>> idle. In the latter case, we reuse part of the nohz_idle_balance.
>>
>> After reversing this commit at least the issue with the freezing console
>> is gone. The second one appeared only sporadically, I still have to see
>> whether it pops up again.
>>
>
> Can you check if the change below fix the problem ?
>
Thanks for the quick feedback. The change however didn't fix the probem, I didn't
notice any changed behavior.

> ---
> kernel/sched/fair.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index 3582117..672f212 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -9430,6 +9430,9 @@ static bool _nohz_idle_balance(struct rq *this_rq, unsigned int flags,
>
> has_blocked_load |= update_nohz_stats(rq, true);
>
> + if (flags == NOHZ_STATS_KICK)
> + continue;
> +
> /*
> * If time for next balance is due,
> * do the balance.
>