Messages in this thread Patch in this message | | | From | Vincent Guittot <> | Date | Fri, 6 Apr 2018 18:03:33 +0200 | Subject | Re: Problem with commit 31e77c93e432 "sched/fair: Update blocked load when newly idle" |
| |
Hi Heiner,
On 30 March 2018 at 10:37, Heiner Kallweit <hkallweit1@gmail.com> wrote: > Am 30.03.2018 um 08:50 schrieb Vincent Guittot: >> On 29 March 2018 at 19:40, Heiner Kallweit <hkallweit1@gmail.com> wrote: >>> Am 29.03.2018 um 09:41 schrieb Vincent Guittot: >> >>>> >>>> I'm finally not so sure that i have the right set up to reproduce the >>>> problem as I haven't been able to reproduce it since. >>>> >>>> Heiner, >>>> >>>> How fast the problem happens on your board ? >>>> Are you doing anything specific on the console that trigger the problem ? >>>> >>> Hi Vincent, >>> >>> the lag when working on the console is constantly there, the "rcu_preempt >>> detected stalls" happens after several hours (so far always within 24h) >>> w/o any triggering event I would be aware of. It occured also when the >>> system was idle at that point in time. >> >> Ok, so I don't have the problem on my hikey as the console never lag >> on my setup. >> >> Can you send me the config of your kernel ? I'd like to check if you >> have enable something that could trigger such problem >> > Sure, he we go. I also add a system log.
Thanks for the config. I have used it for my setup but I can't reproduce your regression. My platforms stay stable so I probably missing something. Are you facing similar problem with other platforms or only this celeron based platform ?
I have reviewed the code but don't see any obvious place in the patch that can generate the problem. Nevertheless, would you mind to try the patch below ? It's a blind test to try to narrow the problem.
Thanks
--- kernel/sched/fair.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 0951d1c..e9835f2 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -9794,9 +9794,9 @@ static int idle_balance(struct rq *this_rq, struct rq_flags *rf) sd = rcu_dereference_check_sched_domain(this_rq->sd); if (sd) update_next_balance(sd, &next_balance); - rcu_read_unlock();
nohz_newidle_balance(this_rq); + rcu_read_unlock();
goto out; } -- 2.7.4 > > # > # Automatically generated file; DO NOT EDIT. > # Linux/x86 4.16.0-rc7 Kernel Configuration > #
[snip]
| |