[PATCH 0/1][SRU][F/I/J] UBUNTU: SAUCE: sfc: The size of the RX recycle ring should be more flexible
Heitor Alves de Siqueira
halves at canonical.com
Thu Mar 10 20:44:59 UTC 2022
Buglink: https://bugs.launchpad.net/bugs/1964512
Hi kernel-team,
This patch is currently in net-next, and has not been merged into mainline yet.
It's unlikely to make it into mainline before our next merge window, so I'm
sending it for review as a SAUCE patch as some users have reported a huge impact
on performance. We've provided backports for these users to test in bionic-hwe
and focal-hwe, and they've reported it fixes their performance issues as
expected.
Cheers,
Heitor
[Backport Notes]
* Clean cherry-pick for Jammy and Impish
* Focal requires minor changes, as ef100 support was introduced in v5.9
[Impact]
* Some 40G Solarflare NICs have low RX performance in some cases, due
low RX recycle ring size
* RX recycle ring size is either 4096 for IOMMU, 16 for NOIOMMU
* The low fixed sizes can cause a high number of calls to alloc_pages,
tanking performance for higher link speeds
[Test Plan]
* Users report that iperf3 is sufficient to showcase the bad RX performance
* For some setups, RX performance was around 15Gbps while TX stayed
consistently above 30Gbps
[Fix]
* This patch sets the RX recycle ring size according to an adapter's
maximum link speed
* Fix was introduced by commit:
000fe940e51f "sfc: The size of the RX recycle ring should be more flexible"
* --!-- Commit is from net-next --!--
[Regression Potential]
* Regressions would show primarily as performance issues, as we're
effectively changing ring sizes for all RX traffic
* It's possible to see increased calls to alloc_pages if ring sizes
aren't being set correctly
* We should look out for excessive memory usage in the sfc driver due to
the increased ring sizes
Martin Habets (1):
sfc: The size of the RX recycle ring should be more flexible
drivers/net/ethernet/sfc/ef10.c | 26 ++++++++++++++++++++++++++
drivers/net/ethernet/sfc/ef100_nic.c | 9 +++++++++
drivers/net/ethernet/sfc/net_driver.h | 2 ++
drivers/net/ethernet/sfc/nic_common.h | 5 +++++
drivers/net/ethernet/sfc/rx_common.c | 18 +-----------------
drivers/net/ethernet/sfc/rx_common.h | 6 ++++++
drivers/net/ethernet/sfc/siena.c | 8 ++++++++
7 files changed, 57 insertions(+), 17 deletions(-)
--
2.35.1
More information about the kernel-team
mailing list