From: Yury Norov <yury.norov@gmail.com>
To: Valentin Schneider <vschneid@redhat.com>
Cc: Srikar Dronamraju <srikar@linux.ibm.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>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] sched: simplify sched_init_numa()
Date: Tue, 19 Aug 2025 10:14:31 -0400 [thread overview]
Message-ID: <aKSGx_86_Fo6sYZ7@yury> (raw)
In-Reply-To: <xhsmh8qjfith8.mognet@vschneid-thinkpadt14sgen2i.remote.csb>
On Tue, Aug 19, 2025 at 10:52:19AM +0200, Valentin Schneider wrote:
> On 21/07/25 14:02, Srikar Dronamraju wrote:
> > * Yury Norov <yury.norov@gmail.com> [2025-07-19 17:07:51]:
> >
> >> From: Yury Norov (NVIDIA) <yury.norov@gmail.com>
> >>
> >> The function opencodes for_each_set_bit() macro.
> >>
> >> Signed-off-by: Yury Norov (NVIDIA) <yury.norov@gmail.com>
> >> ---
> >> kernel/sched/topology.c | 7 +++----
> >> 1 file changed, 3 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c
> >> index b958fe48e020..7dc3c79aa480 100644
> >> --- a/kernel/sched/topology.c
> >> +++ b/kernel/sched/topology.c
> >> @@ -1932,10 +1932,9 @@ void sched_init_numa(int offline_node)
> >> return;
> >> }
> >>
> >> - for (i = 0, j = 0; i < nr_levels; i++, j++) {
> >> - j = find_next_bit(distance_map, NR_DISTANCE_VALUES, j);
> >> - distances[i] = j;
> >> - }
> >> + for_each_set_bit(j, distance_map, NR_DISTANCE_VALUES)
> >> + distances[i++] = j;
> >> +
> >
> > Dont we need to reset the value of i;
> >
>
> That.
Yes we need.
> > Also now we may be iterating for NR_DISTANCE_VALUES instead of nr_levels.
> > It should be okay, since NR_DISTANCE_VALUES is just 8.
> >
>
> DISTANCE_BITS is 8, NR_DISTANCE_VALUES is 1 << 8 aka 256.
I mistaken this DISTANCE_BITS vs NR_DISTANCE_VALUES. The first one is
8, so we can benefit from small_const_nbits() optimization. But we
actually iterate over NR_DISTANCE_VALUES - and no benefit for using
it over nr_levels.
> But here the use of for_each_set_bit() means we'll get just one extra
> iteration compared to using `nr_levels`. That said, since we *have* to
> compute `nr_levels` to allocate sched_domains_numa_distance, IMO we're not
> gaining much by using for_each_set_bit() here.
I'm not sure I understand that. If we switch the loop terminator to
nr_levels, the for_each() will be the exact functional equivalent.
I'll get back to this function shortly and send v2.
Thanks for the discussion.
prev parent reply other threads:[~2025-08-19 14:14 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-19 21:07 [PATCH] sched: simplify sched_init_numa() Yury Norov
2025-07-21 8:32 ` Srikar Dronamraju
2025-08-19 8:52 ` Valentin Schneider
2025-08-19 14:14 ` Yury Norov [this message]
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=aKSGx_86_Fo6sYZ7@yury \
--to=yury.norov@gmail.com \
--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=rostedt@goodmis.org \
--cc=srikar@linux.ibm.com \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.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.