Messages in this thread | | | Date | Thu, 9 May 2024 08:28:21 +0200 | Subject | Re: [PATCH v3] time/tick-sched: idle load balancing when nohz_full cpu becomes idle. | From | Markus Elfring <> |
| |
> When nohz_full CPU stops tick in tick_nohz_irq_exit(), > It wouldn't be chosen to perform idle load balancing because it doesn't > call nohz_balance_enter_idle() in tick_nohz_idle_stop_tick() when it > becomes idle. > > tick_nohz_idle_stop_tick() is only called in idle state and > nohz_balance_enter_idle() tracks the CPU which is part of nohz.idle_cpus_mask > with rq->nohz_tick_stopped. > > Change tick_nohz_idle_stop_tick() to call nohz_balance_enter_idle() > without checking !was_stopped so that nohz_full cpu can be chosen to > perform idle load balancing when it enters idle state.
Would you eventually like to add the tag “Fixes” once more?
… > +++ b/kernel/time/tick-sched.c > @@ -1228,8 +1228,10 @@ void tick_nohz_idle_stop_tick(void) > ts->idle_sleeps++; > ts->idle_expires = expires; > > - if (!was_stopped && tick_sched_flag_test(ts, TS_FLAG_STOPPED)) { > - ts->idle_jiffies = ts->last_jiffies; > + if (tick_sched_flag_test(ts, TS_FLAG_STOPPED)) { > + if (!was_stopped) > + ts->idle_jiffies = ts->last_jiffies; > + > nohz_balance_enter_idle(cpu); > } …
I interpret these diff data in the way that you propose to reorder two condition checks.
But I wonder still how “good” the presented change description fits to the suggested source code adjustment.
Regards, Markus
| |