From: Steven Rostedt <rostedt@goodmis.org>
To: Aili Yao <yaoaili126@gmail.com>
Cc: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com,
vincent.guittot@linaro.org, dietmar.eggemann@arm.com,
bsegall@google.com, mgorman@suse.de,
linux-kernel@vger.kernel.org, yaoaili@kingsoft.com
Subject: Re: [PATCH] sched/isolation: delete redundant housekeeping_overridden check
Date: Tue, 23 Nov 2021 20:42:00 -0500 [thread overview]
Message-ID: <20211123204200.0976e065@rorschach.local.home> (raw)
In-Reply-To: <20211124092103.64e93376@gmail.com>
On Wed, 24 Nov 2021 09:21:03 +0800
Aili Yao <yaoaili126@gmail.com> wrote:
> On Tue, 23 Nov 2021 12:38:52 -0500
> Steven Rostedt <rostedt@goodmis.org> wrote:
>
> > On Tue, 23 Nov 2021 15:45:35 +0800
> > Aili Yao <yaoaili126@gmail.com> wrote:
> >
> > > From: Aili Yao <yaoaili@kingsoft.com>
> > >
> > > housekeeping_test_cpu is only called by housekeeping_cpu(),
> > > and in housekeeping_cpu(), there is already one same check;
> > >
> > > So delete the redundant check.
> > >
> > > Signed-off-by: Aili Yao <yaoaili@kingsoft.com>
> > > ---
> > > kernel/sched/isolation.c | 5 ++---
> > > 1 file changed, 2 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/kernel/sched/isolation.c b/kernel/sched/isolation.c
> > > index 7f06eaf..5c4d533 100644
> > > --- a/kernel/sched/isolation.c
> > > +++ b/kernel/sched/isolation.c
> > > @@ -56,9 +56,8 @@ void housekeeping_affine(struct task_struct *t, enum
> > > hk_flags flags)
> > > bool housekeeping_test_cpu(int cpu, enum hk_flags flags)
> > > {
> > > - if (static_branch_unlikely(&housekeeping_overridden))
> > > - if (housekeeping_flags & flags)
> > > - return cpumask_test_cpu(cpu,
> > > housekeeping_mask);
> >
> > Not only is your email client broken, you don't seem to understand what
> > static_branch_unlikely() is.
>
> Yes, My mail client is not properly configured, sorry for that, I will make it work.
>
> And Yes again, I have limited knowledge about static key, But still don't understand why we
> need two same check(jump or nop instruction?) here, could you be kindly to explain this?
The static branch is a jump and a nop, and the two conditions are not
the same. So nothing above is redundant.
The static_branch_unlikely(&housekeeping_overridden) is a switch that
is either a nop which being an unlikely, is the fast path, and the
content of the if block is the out-of-band condition. That is, the
static branch keeps the expensive if conditional from ever being tested
(because it is "overridden").
Now when it's not overridden, that static branch turns into a jump to
the flags test. Which then performs the expensive conditional compare
against flags to see if it should do the cpumask_test_cpu().
I state "expensive" because compared to a jmp or nop, any branch based
on a test causes cache speculation to be executed. Which means branch
prediction, etc. The jmp and nop are just like any other atomic
instruction that goes through the pipeline and is considered 100%
predictable, hence it doesn't need the extra logic in the CPU to figure
it out.
The only thing your patch does is remove the optimization of the static
branch logic.
-- Steve
next prev parent reply other threads:[~2021-11-24 1:42 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-23 7:45 [PATCH] sched/isolation: delete redundant housekeeping_overridden check Aili Yao
2021-11-23 17:38 ` Steven Rostedt
2021-11-24 1:21 ` Aili Yao
2021-11-24 1:42 ` Steven Rostedt [this message]
2021-11-24 7:42 ` Aili Yao
2021-11-24 14:13 ` Steven Rostedt
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=20211123204200.0976e065@rorschach.local.home \
--to=rostedt@goodmis.org \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=vincent.guittot@linaro.org \
--cc=yaoaili126@gmail.com \
--cc=yaoaili@kingsoft.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox