Messages in this thread | | | Date | Wed, 10 Apr 2024 16:47:04 +0300 | From | Andy Shevchenko <> | Subject | Re: [PATCH 2/2 RESEND] sched/topology: Optimize topology_span_sane() |
| |
On Tue, Apr 09, 2024 at 02:29:09PM -0500, Kyle Meyer wrote: > On Tue, Apr 09, 2024 at 07:25:06PM +0300, Andy Shevchenko wrote: > > On Tue, Apr 09, 2024 at 10:52:50AM -0500, Kyle Meyer wrote: > > > Optimize topology_span_sane() by removing duplicate comparisons. > > > > > > The total number of comparisons is reduced from N * (N - 1) to > > > N * (N - 1) / 2 (per non-NUMA scheduling domain level).
..
> > > - for_each_cpu(i, cpu_map) { > > > - if (i == cpu) > > > - continue; > > > + for_each_cpu_from(i, cpu_map) { > > > > Hmm... I'm not familiar with the for_each_cpu*(), but from the above > > it seems only a single comparison? Or i.o.w. can i ever repeat the value? > > for_each_cpu() is a macro around for_each_set_bit() which iterates over each set > bit in a bitmap starting at zero. > > for_each_cpu_from() is a macro around for_each_set_bit_from() which iterates > over each set bit in a bitmap starting at the specified bit. > > The above (topology_span_sane()) currently does a "single comparison" for each > CPU in cpu_map, but it's called for each CPU in cpu_map and for each scheduling > domain level (please see build_sched_domains() in kernel/sched/topology.c). > > > And what about i < cpu cases? > > Those values have already been passed to topology_span_sane(). This patch uses > for_each_cpu_from() starting at cpu + 1 to prevent those duplicate comparisons.
So, it appears to me that commit message has a room to improve / elaborate based on what you explained to me above.
Thanks!
-- With Best Regards, Andy Shevchenko
| |