[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


[Backport Notes]
* Clean cherry-pick for Jammy and Impish
* Focal requires minor changes, as ef100 support was introduced in v5.9

* 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

* 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(-)


More information about the kernel-team mailing list