Re: [PATCH 4/6] cpuidle: teo: Increase minimum time to stop tick

From: Dietmar Eggemann
Date: Fri Jun 07 2024 - 04:14:51 EST


On 06/06/2024 11:00, Christian Loehle wrote:
> Since stopping the tick isn't free, add at least some minor constant
> (1ms) for the threshold to stop the tick.

Sounds pretty arbitrary to me? 'duration_ns' is either based on
target_residency_ns or tick_nohz_get_sleep_length() or even set to
TICK_NSEC/2. Does adding 1ms makes sense to all these cases? But then
why 1ms?

> Signed-off-by: Christian Loehle <christian.loehle@xxxxxxx>
> ---
> drivers/cpuidle/governors/teo.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/cpuidle/governors/teo.c b/drivers/cpuidle/governors/teo.c
> index 216d34747e3b..ca9422bbd8db 100644
> --- a/drivers/cpuidle/governors/teo.c
> +++ b/drivers/cpuidle/governors/teo.c
> @@ -622,10 +622,10 @@ static int teo_select(struct cpuidle_driver *drv, struct cpuidle_device *dev,
> /*
> * Allow the tick to be stopped unless the selected state is a polling
> * one or the expected idle duration is shorter than the tick period
> - * length.
> + * length plus some constant (1ms) to account for stopping it.
> */
> if ((!(drv->states[idx].flags & CPUIDLE_FLAG_POLLING) &&
> - duration_ns >= TICK_NSEC) || tick_nohz_tick_stopped())
> + duration_ns > NSEC_PER_MSEC + TICK_NSEC) || tick_nohz_tick_stopped())
> return idx;
>
> out_tick_state: