Messages in this thread |  | | Date | Mon, 6 Jan 2020 23:18:51 +0100 | From | Frederic Weisbecker <> | Subject | Re: [PATCH 1/4] tick/sched: Forward timer even in nohz mode |
| |
On Mon, Dec 16, 2019 at 06:22:22PM -0500, Scott Wood wrote: > Currently when exiting nohz, the expiry will be forwarded as if we > had just run the timer. If we re-enter nohz before this new expiry, > and exit after, this forwarding will happen again. If this load pattern > recurs the tick can be indefinitely postponed.
I must be missing something but I don't see why that would be a problem. Indeed the tick can be indefinitely postponed but that's as long as it's not needed. As soon as it's needed (timer callback expired, RCU, ...), the tick will be retained and it will eventually fire.
> @@ -642,9 +642,6 @@ static void tick_nohz_restart(struct tick_sched *ts, ktime_t now) > hrtimer_cancel(&ts->sched_timer); > hrtimer_set_expires(&ts->sched_timer, ts->last_tick); > > - /* Forward the time to expire in the future */ > - hrtimer_forward(&ts->sched_timer, now, tick_period); > -
By doing that, you may program a past tick and thus add a useless interrupt at each idle exit.
Thanks.
|  |