Re: Regression in v5.0-rc1 with autosuspend hrtimers

From: Vincent Guittot
Date: Wed Jan 09 2019 - 11:48:37 EST


On Wed, 9 Jan 2019 at 17:28, Tony Lindgren <tony@xxxxxxxxxxx> wrote:
>
> * Rafael J. Wysocki <rafael@xxxxxxxxxx> [190109 09:44]:
> > On Wed, Jan 9, 2019 at 2:51 AM Tony Lindgren <tony@xxxxxxxxxxx> wrote:
> > >
> > > * Vincent Guittot <vincent.guittot@xxxxxxxxxx> [190109 01:42]:
> > > > Le Tuesday 08 Jan 2019 Ã 13:37:43 (-0800), Tony Lindgren a Ãcrit :
> > > > > Lowering the autosuspend_delay_ms to 2100 ms makes things work again.
> > > > > Anything higher than 2200 ms seems to somehow time out immediately
> > > > > now :)
> > > >
> > > > This is quite close to the max ns of an int on arm 32bits
> > > >
> > > > Could you try the patch below ?
> > >
> > > Yup great thanks, that's it:
> > >
> > > Tested-by: Tony Lindgren <tony@xxxxxxxxxxx>
> >
> > Cool. Thanks for getting to the bottom of this!
>
> No problem.
>
> One more thing I noticed: The 25% slack can get noticeable
> for larger values. For things like a 3 second uart console
> timeout slack of 750 ms is quite large variation.
>
> Should we have a limit of max 100 ms for the slack?

Keep in mind that when jiffies were used, expires was rounded to a
full second when delay was greater than a second. So you could already
have difference of up 990ms on arm before this patch
And i don't take into account the rework of timer infra which add
another level of variation, something like up to 640 ms more when the
timer is greater than 2880 ms for arm IIRC
>
> Regards,
>
> Tony