From: Ingo Molnar <mingo@kernel.org>
To: yang.yang29@zte.com.cn
Cc: surenb@google.com, peterz@infradead.org, hannes@cmpxchg.org,
linux-kernel@vger.kernel.org, juri.lelli@redhat.com,
mingo@redhat.com
Subject: Re: [PATCH linux-next v3 2/4] sched/psi: Avoid update triggers and rtpoll_total when it is unnecessary
Date: Wed, 11 Oct 2023 23:15:16 +0200 [thread overview]
Message-ID: <ZScQZLTssSfq19Jm@gmail.com> (raw)
In-Reply-To: <202310101641075436843@zte.com.cn>
* yang.yang29@zte.com.cn <yang.yang29@zte.com.cn> wrote:
> 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.
>
> Signed-off-by: Yang Yang <yang.yang29@zte.com.cn>
> Cc: Zhang Yunkai <zhang.yunkai@zte.com.cn>
> Cc: Ran Xiaokai <ran.xiaokai@zte.com.cn>
> ---
> kernel/sched/psi.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/sched/psi.c b/kernel/sched/psi.c
> index be853f227e40..143f8eb34f9d 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));
> + }
Yeah, so I believe we may have been talking past each other for past
versions of this patch: why is this patch modifying the order of the
modification to group->rtpoll_next_update?
It should do the below sequence, nothing more - see the patch attached
below. This is basically a combination of patches #2 and #3.
And then the final patch removes the now superfluous 'update_total'
parameter, which is always true.
Here are the commits I applied to tip:sched/core:
e03dc9fa0663 sched/psi: Change update_triggers() to a 'void' function
...
80cc1d1d5ee3 sched/psi: Avoid updating PSI triggers and ->rtpoll_total when there are no state changes
3657680f38cd sched/psi: Delete the 'update_total' function parameter from update_triggers()
I rewrote the changelogs for readability.
Thanks,
Ingo
===================>
From: Yang Yang <yang.yang29@zte.com.cn>
Date: Tue, 10 Oct 2023 16:41:07 +0800
Subject: [PATCH] sched/psi: Avoid updating PSI triggers and ->rtpoll_total when there are no state changes
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 the user have not changed.
This will help to slightly reduce unnecessary computations of PSI.
[ mingo: Changelog updates ]
Signed-off-by: Yang Yang <yang.yang29@zte.com.cn>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Peter Ziljstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/202310101641075436843@zte.com.cn
---
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,
next prev parent reply other threads:[~2023-10-11 21:15 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-13 12:44 [PATCH linux-next] sched/psi: Avoid update triggers and rtpoll_total when it is unnecessary yang.yang29
2023-09-13 23:01 ` Suren Baghdasaryan
2023-09-14 2:02 ` yang.yang29
2023-09-14 5:53 ` yang.yang29
2023-09-14 9:10 ` yang.yang29
2023-09-27 0:14 ` Suren Baghdasaryan
2023-09-27 1:56 ` yang.yang29
2023-09-30 22:32 ` Suren Baghdasaryan
2023-10-07 6:21 ` [PATCH linux-next v2] " yang.yang29
2023-10-09 10:49 ` Ingo Molnar
2023-10-09 12:19 ` [PATCH linux-next 0/3] sched/psi: Optimize the process of updating triggers and rtpoll_total yang.yang29
2023-10-09 12:24 ` [PATCH linux-next 1/3] sched/psi: Change update_triggers() to a void function yang.yang29
2023-10-09 12:48 ` Ingo Molnar
2023-10-09 12:59 ` [tip: sched/core] sched/psi: Change update_triggers() to a 'void' function tip-bot2 for Yang Yang
2023-10-09 12:30 ` [PATCH linux-next 2/3] sched/psi: Avoid update triggers and rtpoll_total when it is unnecessary yang.yang29
2023-10-09 12:52 ` Ingo Molnar
2023-10-09 17:42 ` Suren Baghdasaryan
2023-10-10 2:12 ` yang.yang29
2023-10-10 3:05 ` [PATCH linux-next v2 0/4] sched/psi: Optimize the process of updating triggers and rtpoll_total yang.yang29
2023-10-10 3:09 ` [PATCH linux-next v2 1/4] sched/psi: Change update_triggers() to a 'void' function yang.yang29
2023-10-10 7:38 ` Ingo Molnar
2023-10-10 8:31 ` [PATCH linux-next v3 0/4] sched/psi: Optimize the process of updating triggers and rtpoll_total yang.yang29
2023-10-10 8:36 ` [PATCH linux-next v3 1/4] sched/psi: Change update_triggers() to a 'void' function yang.yang29
2023-10-19 16:01 ` Suren Baghdasaryan
2023-10-10 8:41 ` [PATCH linux-next v3 2/4] sched/psi: Avoid update triggers and rtpoll_total when it is unnecessary yang.yang29
2023-10-11 21:15 ` Ingo Molnar [this message]
2023-10-12 2:13 ` yang.yang29
2023-10-19 16:04 ` Suren Baghdasaryan
2023-10-11 21:20 ` [tip: sched/core] sched/psi: Avoid updating PSI triggers and ->rtpoll_total when there are no state changes tip-bot2 for Yang Yang
2023-10-10 8:42 ` [PATCH linux-next v3 3/4] sched/psi: update rtpoll_next_update after update triggers and rtpoll_total yang.yang29
2023-10-19 16:07 ` Suren Baghdasaryan
2023-10-10 8:45 ` [PATCH linux-next v3 4/4] sched/psi: Delete the function parameter update_total of update_triggers() yang.yang29
2023-10-11 21:20 ` [tip: sched/core] sched/psi: Delete the 'update_total' function parameter from update_triggers() tip-bot2 for Yang Yang
2023-10-19 16:09 ` [PATCH linux-next v3 4/4] sched/psi: Delete the function parameter update_total of update_triggers() Suren Baghdasaryan
2023-10-10 3:20 ` [PATCH linux-next v2 2/4] sched/psi: Avoid update triggers and rtpoll_total when it is unnecessary yang.yang29
2023-10-10 3:24 ` [PATCH linux-next v2 3/4] sched/psi: update rtpoll_next_update after update triggers and rtpoll_total yang.yang29
2023-10-10 3:28 ` [PATCH linux-next v2 4/4] sched/psi: Delete the function parameter update_total of update_triggers() yang.yang29
2023-10-09 12:37 ` [PATCH linux-next 3/3] " yang.yang29
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZScQZLTssSfq19Jm@gmail.com \
--to=mingo@kernel.org \
--cc=hannes@cmpxchg.org \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=surenb@google.com \
--cc=yang.yang29@zte.com.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.