Messages in this thread Patch in this message | | | From | Yunfeng Ye <> | Subject | [PATCH] tick/nohz: Make the idle_exittime update correctly | Date | Sat, 5 Dec 2020 17:41:52 +0800 |
| |
The idle_exittime field of tick_sched is used to record the time when the idle state was left. but currently the idle_exittime is updated in the function tick_nohz_restart_sched_tick(), which is not always in idle state when nohz_full is configured.
tick_irq_exit tick_nohz_irq_exit tick_nohz_full_update_tick tick_nohz_restart_sched_tick ts->idle_exittime = now;
So move to tick_nohz_stop_idle() to make the idle_exittime update correctly.
Signed-off-by: Yunfeng Ye <yeyunfeng@huawei.com> --- kernel/time/tick-sched.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index 749ec2a583de..be2e5d772d50 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -591,6 +591,7 @@ static void tick_nohz_stop_idle(struct tick_sched *ts, ktime_t now) { update_ts_time_stats(smp_processor_id(), ts, now, NULL); ts->idle_active = 0; + ts->idle_exittime = now;
sched_clock_idle_wakeup_event(); } @@ -901,7 +902,6 @@ static void tick_nohz_restart_sched_tick(struct tick_sched *ts, ktime_t now) * Cancel the scheduled timer and restore the tick */ ts->tick_stopped = 0; - ts->idle_exittime = now;
tick_nohz_restart(ts, now); } -- 2.18.4
| |