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

From: Vincent Guittot
Date: Sat Mar 24 2018 - 02:46:52 EST


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 ?

---
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.
--

> System is a Zotac CI321 mini PC with Intel Celeron 2961Y CPU.
> If you need more details, please let me know.
>
> Regards, Heiner
>
> [1] https://lkml.org/lkml/2018/3/22/605