From: Yury Norov <yury.norov@gmail.com>
To: linux-kernel@vger.kernel.org,
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Cc: Yury Norov <yury.norov@gmail.com>, Chen Yu <yu.c.chen@intel.com>,
Leonardo Bras <leobras@redhat.com>,
Ingo Molnar <mingo@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Juri Lelli <juri.lelli@redhat.com>,
Vincent Guittot <vincent.guittot@linaro.org>,
Dietmar Eggemann <dietmar.eggemann@arm.com>,
Steven Rostedt <rostedt@goodmis.org>,
Ben Segall <bsegall@google.com>, Mel Gorman <mgorman@suse.de>,
Valentin Schneider <vschneid@redhat.com>
Subject: [PATCH v3 0/3] sched/topology: optimize topology_span_sane()
Date: Mon, 2 Sep 2024 11:36:04 -0700 [thread overview]
Message-ID: <20240902183609.1683756-1-yury.norov@gmail.com> (raw)
The function may call cpumask_equal with tl->mask(cpu) == tl->mask(i),
even when cpu != i. In such case, cpumask_equal() would always return
true, and we can proceed to the next iteration immediately.
Valentin Schneider shares on it:
PKG can potentially hit that condition, and so can any
sched_domain_mask_f that relies on the node masks...
I'm thinking ideally we should have checks in place to
ensure all node_to_cpumask_map[] masks are disjoint,
then we could entirely skip the levels that use these
masks in topology_span_sane(), but there's unfortunately
no nice way to flag them... Also there would be cases
where there's no real difference between PKG and NODE
other than NODE is still based on a per-cpu cpumask and
PKG isn't, so I don't see a nicer way to go about this.
v1: https://lore.kernel.org/lkml/ZrJk00cmVaUIAr4G@yury-ThinkPad/T/
v2: https://lkml.org/lkml/2024/8/7/1299
v3:
- add topology_cpumask_equal() helper in #3;
- re-use 'cpu' as an iterator int the for_each_cpu() loop;
- add proper versioning for all patches.
Yury Norov (3):
sched/topology: pre-compute topology_span_sane() loop params
sched/topology: optimize topology_span_sane()
sched/topology: reorganize topology_span_sane() checking order
kernel/sched/topology.c | 29 +++++++++++++++++++++++++----
1 file changed, 25 insertions(+), 4 deletions(-)
--
2.43.0
next reply other threads:[~2024-09-02 18:36 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-02 18:36 Yury Norov [this message]
2024-09-02 18:36 ` [PATCH v3 1/3] sched/topology: pre-compute topology_span_sane() loop params Yury Norov
2024-09-02 18:36 ` [PATCH v3 2/3] sched/topology: optimize topology_span_sane() Yury Norov
2024-09-02 18:36 ` [PATCH v3 3/3] sched/topology: reorganize topology_span_sane() checking order Yury Norov
2024-09-14 16:54 ` [PATCH v3 0/3] sched/topology: optimize topology_span_sane() Yury Norov
2024-09-30 19:14 ` Yury Norov
2024-11-06 16:28 ` Yury Norov
2024-11-06 17:58 ` Christophe JAILLET
2024-11-06 18:03 ` Yury Norov
2024-11-06 18:06 ` Peter Zijlstra
2024-11-07 15:22 ` Yury Norov
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=20240902183609.1683756-1-yury.norov@gmail.com \
--to=yury.norov@gmail.com \
--cc=bsegall@google.com \
--cc=christophe.jaillet@wanadoo.fr \
--cc=dietmar.eggemann@arm.com \
--cc=juri.lelli@redhat.com \
--cc=leobras@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
--cc=yu.c.chen@intel.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.