Re: [PATCH v9 16/32] timers: Optimization for timer_base_try_to_set_idle()

From: Sebastian Siewior
Date: Mon Dec 04 2023 - 12:52:55 EST


On 2023-12-01 10:26:38 [+0100], Anna-Maria Behnsen wrote:
> When tick is stopped also the timer base is_idle flag is set. When
> reentering the timer_base_try_to_set_idle() with the tick stopped, there is
> no need to check whether the timer base needs to be set idle again. When a
> timer was enqueued in the meantime, this is already handled by the
> nohz_get_next_event() call which was executed before tick_nohz_stop_tick().

as of #15 tick_stopped is set later in tick_nohz_stop_tick() and both
(tick_sched::tick_stopped and timer_base::is_idle) are cleared in
tick_nohz_restart_sched_tick().

Then we have tick_nohz_idle_retain_tick() with only one caller and is
only clearing timer_base::is_idle. Now, wouldn't it make sense to
preload timer_idle based on timer_base::is_idle?

I don't know if it there is a different outcome if timer_base::is_idle
gets cleared in the idle path vs tick_sched::tick_stopped.
I can't find nohz_get_next_event().

> Signed-off-by: Anna-Maria Behnsen <anna-maria@xxxxxxxxxxxxx>

Sebastian