From: Frederic Weisbecker <frederic@kernel.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
LKML <linux-kernel@vger.kernel.org>,
"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
Ti Zhou <x2019cwm@stfx.ca>, Yunfeng Ye <yeyunfeng@huawei.com>,
"Paul E . McKenney" <paulmck@kernel.org>,
Marcelo Tosatti <mtosatti@redhat.com>,
Ingo Molnar <mingo@kernel.org>
Subject: Re: [PATCH 02/10] tick/nohz: Add tick_nohz_full_this_cpu()
Date: Tue, 16 Mar 2021 14:05:14 +0100 [thread overview]
Message-ID: <20210316130514.GB639918@lothringen> (raw)
In-Reply-To: <YFCkUUCYchYpB/0W@hirez.programming.kicks-ass.net>
On Tue, Mar 16, 2021 at 01:28:01PM +0100, Peter Zijlstra wrote:
> On Thu, Mar 11, 2021 at 01:37:00PM +0100, Frederic Weisbecker wrote:
> > Optimize further the check for local full dynticks CPU. Testing directly
> > tick_nohz_full_cpu(smp_processor_id()) is suboptimal because the
> > compiler first fetches the CPU number and only then processes the
> > static key.
> >
> > It's best to evaluate the static branch before anything.
>
> Or you do tricky things like this ;-)
Good point!
I'll check the asm diff to see if that really does what we want.
I expect it will.
Thanks.
>
> diff --git a/include/linux/tick.h b/include/linux/tick.h
> index 7340613c7eff..bd4a6b055b80 100644
> --- a/include/linux/tick.h
> +++ b/include/linux/tick.h
> @@ -185,13 +185,12 @@ static inline bool tick_nohz_full_enabled(void)
> return tick_nohz_full_running;
> }
>
> -static inline bool tick_nohz_full_cpu(int cpu)
> -{
> - if (!tick_nohz_full_enabled())
> - return false;
> -
> - return cpumask_test_cpu(cpu, tick_nohz_full_mask);
> -}
> +#define tick_nohz_full_cpu(_cpu) ({ \
> + bool __ret = false; \
> + if (tick_nohz_full_enabled()) \
> + __ret = cpumask_test_cpu((_cpu), tick_nohz_full_mask); \
> + __ret; \
> +})
>
> static inline void tick_nohz_full_add_cpus_to(struct cpumask *mask)
> {
>
>
next prev parent reply other threads:[~2021-03-16 13:06 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-11 12:36 [PATCH 00/10] tick/nohz updates Frederic Weisbecker
2021-03-11 12:36 ` [PATCH 01/10] tick/nohz: Prevent tick_nohz_get_sleep_length() from returning negative value Frederic Weisbecker
2021-03-16 12:21 ` Peter Zijlstra
2021-03-16 13:37 ` Frederic Weisbecker
2021-03-16 14:35 ` Peter Zijlstra
2021-03-16 14:53 ` Frederic Weisbecker
2021-03-16 15:26 ` Rafael J. Wysocki
2021-03-16 15:57 ` 回复: " Zhou Ti (x2019cwm)
2021-03-16 16:08 ` Zhou Ti (x2019cwm)
2021-03-16 16:25 ` Peter Zijlstra
2021-03-17 21:49 ` Zhou Ti (x2019cwm)
2021-03-25 13:14 ` Frederic Weisbecker
2021-03-25 18:56 ` Rafael J. Wysocki
2021-03-25 19:18 ` Zhou Ti (x2019cwm)
2021-03-25 19:50 ` Rafael J. Wysocki
2021-03-25 20:37 ` Zhou Ti (x2019cwm)
2021-03-26 17:01 ` Rafael J. Wysocki
2021-03-26 17:53 ` Zhou Ti (x2019cwm)
2021-03-26 18:54 ` Rafael J. Wysocki
2021-03-26 22:53 ` Zhou Ti (x2019cwm)
2021-03-29 12:44 ` Rafael J. Wysocki
2021-03-29 14:49 ` Zhou Ti (x2019cwm)
2021-03-11 12:37 ` [PATCH 02/10] tick/nohz: Add tick_nohz_full_this_cpu() Frederic Weisbecker
2021-03-16 12:28 ` Peter Zijlstra
2021-03-16 13:05 ` Frederic Weisbecker [this message]
2021-03-11 12:37 ` [PATCH 03/10] tick/nohz: Conditionally restart tick on idle exit Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 04/10] tick/nohz: Remove superflous check for CONFIG_VIRT_CPU_ACCOUNTING_NATIVE Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 05/10] tick/nohz: Update idle_exittime on actual idle exit Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 06/10] timer: Report ignored local enqueue in nohz mode Frederic Weisbecker
2021-03-16 15:27 ` Peter Zijlstra
2021-03-25 13:07 ` Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 07/10] tick/nohz: Update nohz_full Kconfig help Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 08/10] tick/nohz: Only wakeup a single target cpu when kicking a task Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 09/10] tick/nohz: Change signal tick dependency to wakeup CPUs of member tasks Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 10/10] tick/nohz: Kick only _queued_ task whose tick dependency is updated Frederic Weisbecker
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=20210316130514.GB639918@lothringen \
--to=frederic@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=mtosatti@redhat.com \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=rafael.j.wysocki@intel.com \
--cc=tglx@linutronix.de \
--cc=x2019cwm@stfx.ca \
--cc=yeyunfeng@huawei.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 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.