Messages in this thread Patch in this message | | | Date | Mon, 9 Oct 2023 20:30:43 +0800 (CST) | From | <> | Subject | [PATCH linux-next 2/3] sched/psi: Avoid update triggers and rtpoll total when it is unnecessary |
| |
From: Yang Yang <yang.yang29@zte.com.cn>
When psimon wakes up and there are no state changes for rtpoll_states, it's unnecessary to update triggers and rtpoll_total because the pressures being monitored by user had not changed. This will help to slightly reduce unnecessary computations of psi.
And update group->rtpoll_next_update after called update_triggers() and update rtpoll_total. This will prevent bugs if update_triggers() uses group->rtpoll_next_update in the future, and it makes more sense to set the next update time after we finished the current update.
Signed-off-by: Yang Yang <yang.yang29@zte.com.cn> Suggested-by: Suren Baghdasaryan <surenb@google.com> Suggested-by: Ingo Molnar <mingo@kernel.org> --- kernel/sched/psi.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/kernel/sched/psi.c b/kernel/sched/psi.c index be853f227e40..79f8db0c6150 100644 --- a/kernel/sched/psi.c +++ b/kernel/sched/psi.c @@ -704,11 +704,12 @@ static void psi_rtpoll_work(struct psi_group *group) }
if (now >= group->rtpoll_next_update) { - update_triggers(group, now, &update_total, PSI_POLL); - group->rtpoll_next_update = now + group->rtpoll_min_period; - if (update_total) + if (changed_states & group->rtpoll_states) { + update_triggers(group, now, &update_total, PSI_POLL); memcpy(group->rtpoll_total, group->total[PSI_POLL], sizeof(group->rtpoll_total)); + } + group->rtpoll_next_update = now + group->rtpoll_min_period; }
psi_schedule_rtpoll_work(group, -- 2.25.1
| |