From: Tariq Toukan <ttoukan.linux@gmail.com>
To: Yury Norov <yury.norov@gmail.com>,
linux-kernel@vger.kernel.org,
"David S. Miller" <davem@davemloft.net>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Barry Song <baohua@kernel.org>, Ben Segall <bsegall@google.com>,
Dietmar Eggemann <dietmar.eggemann@arm.com>,
Gal Pressman <gal@nvidia.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Haniel Bristot de Oliveira <bristot@redhat.com>,
Heiko Carstens <hca@linux.ibm.com>,
Ingo Molnar <mingo@redhat.com>,
Jacob Keller <jacob.e.keller@intel.com>,
Jakub Kicinski <kuba@kernel.org>,
Jason Gunthorpe <jgg@nvidia.com>,
Jesse Brandeburg <jesse.brandeburg@intel.com>,
Jonathan Cameron <Jonathan.Cameron@huawei.com>,
Juri Lelli <juri.lelli@redhat.com>,
Leon Romanovsky <leonro@nvidia.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Mel Gorman <mgorman@suse.de>, Peter Lafreniere <peter@n8pjl.ca>,
Peter Zijlstra <peterz@infradead.org>,
Rasmus Villemoes <linux@rasmusvillemoes.dk>,
Saeed Mahameed <saeedm@nvidia.com>,
Steven Rostedt <rostedt@goodmis.org>,
Tariq Toukan <tariqt@nvidia.com>, Tony Luck <tony.luck@intel.com>,
Valentin Schneider <vschneid@redhat.com>,
Vincent Guittot <vincent.guittot@linaro.org>
Cc: linux-crypto@vger.kernel.org, netdev@vger.kernel.org,
linux-rdma@vger.kernel.org
Subject: Re: [PATCH RESEND 0/9] sched: cpumask: improve on cpumask_local_spread() locality
Date: Sun, 22 Jan 2023 14:57:01 +0200 [thread overview]
Message-ID: <4dc2a367-d3b1-e73e-5f42-166e9cf84bac@gmail.com> (raw)
In-Reply-To: <20230121042436.2661843-1-yury.norov@gmail.com>
On 21/01/2023 6:24, Yury Norov wrote:
> cpumask_local_spread() currently checks local node for presence of i'th
> CPU, and then if it finds nothing makes a flat search among all non-local
> CPUs. We can do it better by checking CPUs per NUMA hops.
>
> This has significant performance implications on NUMA machines, for example
> when using NUMA-aware allocated memory together with NUMA-aware IRQ
> affinity hints.
>
> Performance tests from patch 8 of this series for mellanox network
> driver show:
>
> TCP multi-stream, using 16 iperf3 instances pinned to 16 cores (with aRFS on).
> Active cores: 64,65,72,73,80,81,88,89,96,97,104,105,112,113,120,121
>
> +-------------------------+-----------+------------------+------------------+
> | | BW (Gbps) | TX side CPU util | RX side CPU util |
> +-------------------------+-----------+------------------+------------------+
> | Baseline | 52.3 | 6.4 % | 17.9 % |
> +-------------------------+-----------+------------------+------------------+
> | Applied on TX side only | 52.6 | 5.2 % | 18.5 % |
> +-------------------------+-----------+------------------+------------------+
> | Applied on RX side only | 94.9 | 11.9 % | 27.2 % |
> +-------------------------+-----------+------------------+------------------+
> | Applied on both sides | 95.1 | 8.4 % | 27.3 % |
> +-------------------------+-----------+------------------+------------------+
>
> Bottleneck in RX side is released, reached linerate (~1.8x speedup).
> ~30% less cpu util on TX.
>
> This series was supposed to be included in v6.2, but that didn't happen. It
> spent enough in -next without any issues, so I hope we'll finally see it
> in v6.3.
>
> I believe, the best way would be moving it with scheduler patches, but I'm
> OK to try again with bitmap branch as well.
Now that Yury dropped several controversial bitmap patches form the PR,
the rest are mostly in sched, or new API that's used by sched.
Valentin, what do you think? Can you take it to your sched branch?
>
> Tariq Toukan (1):
> net/mlx5e: Improve remote NUMA preferences used for the IRQ affinity
> hints
>
> Valentin Schneider (2):
> sched/topology: Introduce sched_numa_hop_mask()
> sched/topology: Introduce for_each_numa_hop_mask()
>
> Yury Norov (6):
> lib/find: introduce find_nth_and_andnot_bit
> cpumask: introduce cpumask_nth_and_andnot
> sched: add sched_numa_find_nth_cpu()
> cpumask: improve on cpumask_local_spread() locality
> lib/cpumask: reorganize cpumask_local_spread() logic
> lib/cpumask: update comment for cpumask_local_spread()
>
> drivers/net/ethernet/mellanox/mlx5/core/eq.c | 18 +++-
> include/linux/cpumask.h | 20 +++++
> include/linux/find.h | 33 +++++++
> include/linux/topology.h | 33 +++++++
> kernel/sched/topology.c | 90 ++++++++++++++++++++
> lib/cpumask.c | 52 ++++++-----
> lib/find_bit.c | 9 ++
> 7 files changed, 230 insertions(+), 25 deletions(-)
>
next prev parent reply other threads:[~2023-01-22 12:57 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-21 4:24 [PATCH RESEND 0/9] sched: cpumask: improve on cpumask_local_spread() locality Yury Norov
2023-01-21 4:24 ` [PATCH 1/9] lib/find: introduce find_nth_and_andnot_bit Yury Norov
2023-01-21 4:24 ` [PATCH 2/9] cpumask: introduce cpumask_nth_and_andnot Yury Norov
2023-01-21 4:24 ` [PATCH 3/9] sched: add sched_numa_find_nth_cpu() Yury Norov
2023-02-03 0:58 ` Chen Yu
2023-02-07 5:09 ` Jakub Kicinski
2023-02-07 10:29 ` Valentin Schneider
2023-02-17 1:39 ` Yury Norov
2023-02-17 11:11 ` Andy Shevchenko
2023-02-20 19:46 ` Jakub Kicinski
2023-01-21 4:24 ` [PATCH 4/9] cpumask: improve on cpumask_local_spread() locality Yury Norov
2023-01-21 4:24 ` [PATCH 5/9] lib/cpumask: reorganize cpumask_local_spread() logic Yury Norov
2023-01-21 4:24 ` [PATCH 6/9] sched/topology: Introduce sched_numa_hop_mask() Yury Norov
2023-01-21 4:24 ` [PATCH 7/9] sched/topology: Introduce for_each_numa_hop_mask() Yury Norov
2023-01-21 4:24 ` [PATCH 8/9] net/mlx5e: Improve remote NUMA preferences used for the IRQ affinity hints Yury Norov
2023-01-21 4:24 ` [PATCH 9/9] lib/cpumask: update comment for cpumask_local_spread() Yury Norov
2023-01-22 12:57 ` Tariq Toukan [this message]
2023-01-23 9:57 ` [PATCH RESEND 0/9] sched: cpumask: improve on cpumask_local_spread() locality Valentin Schneider
2023-01-29 8:07 ` Tariq Toukan
2023-01-30 20:22 ` Jakub Kicinski
2023-02-02 17:33 ` Jakub Kicinski
2023-02-02 17:37 ` Yury Norov
2023-02-08 2:25 ` Jakub Kicinski
2023-02-08 4:20 ` patchwork-bot+netdevbpf
2023-02-08 15:39 ` [PATCH 1/1] ice: Change assigning method of the CPU affinity masks Pawel Chmielewski
[not found] ` <CAH-L+nO+KyzPSX_F0fh+9i=0rW1hoBPFTGbXc1EX+4MGYOR1kA@mail.gmail.com>
2023-02-08 16:08 ` Andy Shevchenko
2023-02-08 16:39 ` Yury Norov
2023-02-08 16:58 ` Andy Shevchenko
2023-02-08 19:11 ` kernel test robot
2023-02-09 2:41 ` Philip Li
2023-02-08 19:22 ` kernel test robot
2023-02-08 23:21 ` Jakub Kicinski
2023-02-09 5:14 ` kernel test robot
2023-02-16 14:54 ` [PATCH v2 " Pawel Chmielewski
2023-02-16 15:14 ` Andy Shevchenko
2023-02-16 15:16 ` Andy Shevchenko
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=4dc2a367-d3b1-e73e-5f42-166e9cf84bac@gmail.com \
--to=ttoukan.linux@gmail.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=baohua@kernel.org \
--cc=bristot@redhat.com \
--cc=bsegall@google.com \
--cc=davem@davemloft.net \
--cc=dietmar.eggemann@arm.com \
--cc=gal@nvidia.com \
--cc=gregkh@linuxfoundation.org \
--cc=hca@linux.ibm.com \
--cc=jacob.e.keller@intel.com \
--cc=jesse.brandeburg@intel.com \
--cc=jgg@nvidia.com \
--cc=juri.lelli@redhat.com \
--cc=kuba@kernel.org \
--cc=leonro@nvidia.com \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=peter@n8pjl.ca \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=saeedm@nvidia.com \
--cc=tariqt@nvidia.com \
--cc=tony.luck@intel.com \
--cc=torvalds@linux-foundation.org \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
--cc=yury.norov@gmail.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;
as well as URLs for NNTP newsgroup(s).