All of lore.kernel.org
 help / color / mirror / Atom feed
* [DPDK/other Bug 1867] mlx5: enabling internal VF-to-VF communication causes performance to drop significantly
@ 2026-01-13 12:31 bugzilla
  0 siblings, 0 replies; only message in thread
From: bugzilla @ 2026-01-13 12:31 UTC (permalink / raw)
  To: dev

http://bugs.dpdk.org/show_bug.cgi?id=1867

            Bug ID: 1867
           Summary: mlx5: enabling internal VF-to-VF communication causes
                    performance to drop significantly
           Product: DPDK
           Version: 25.11
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: other
          Assignee: dev@dpdk.org
          Reporter: robin@jarry.cc
                CC: rasland@nvidia.com
  Target Milestone: ---

SUMMARY
=======

Enabling internal VF-to-VF communication causes performance to drop
significantly.

Here is a visual representation of the topology:

+---------------------------------------------------------------------+
|                                 dut                                 |
|                                                                     |
| +---------------+         +-------------+         +---------------+ |
| |    testpmd    |         |   testpmd   |         |    testpmd    | |
| |   "outer 0"   |         |   "inner"   |         |   "outer 1"   | |
| +--+---------+--+         +--+-------+--+         +--+---------+--+ |
|    |         |               |       |               |         |    |
|    |         |       ,-------'       `-------.       |         |    |
|    |         |       |                       |       |         |    |
| +--+--+   +--+--+ +--+--+                 +--+--+ +--+--+   +--+--+ |
| | vf0 |   | vf1 | | vf2 |                 | vf2 | | vf1 |   | vf0 | |
| +--+--+   +--+--+ +--+--+                 +--+--+ +--+--+   +--+--+ |
|    |         |       |                       |       |         |    |
|    |         |       |                       |       |         |    |
| +--+---------|-------|--+                 +--|-------|---------+--+ |
| |            `-------'  |                 |  `-------'            | |
| |          pf0          |                 |          pf1          | |
| +-----------+-----------+                 +-----------+-----------+ |
|             |                                         |             |
+-------------|-----------------------------------------|-------------+
              |                                         |
+-------------|-----------------------------------------|-------------+
|             |                 switch                  |             |
+-------------|-----------------------------------------|-------------+
              |                                         |
+-------------|-----------------------------------------|-------------+
|             |                                         |             |
| +-----------+------------+                +-----------+-----------+ |
| |          pf0           |                |          pf1          | |
| +-----------+------------+                +-----------+-----------+ |
|             |                                         |             |
| +-----------+-----------------------------------------+-----------+ |
| |                                                                 | |
| |                               trex                              | |
| |                                                                 | |
| +-----------------------------------------------------------------+ |
|                                                                     |
|                                 tgen                                |
+---------------------------------------------------------------------+

Important notes:

* Promisc mode is *disabled* on all ports.
* Traffic is sent from trex with VF0 mac addresses as ethernet destination.
* The switch does *not* flood anything.

Observations:

* When the tgen emits at 1M pkt/s per side, every packet is properly forwarded
to both "outer" testpmds.
* When emitting at 10M pkt/s per side, only ~6.8M pkt/s are received by the
"outer" testpmds on VF0.
* When emitting at 37.5M pkt/s (25G line rate), only ~1.5M pkt/s are received
by the "outer" testpmds on VF0.
* ethtool stats on PF interfaces reflect the actual transmission rate of the
traffic generator (rx_packets_phy) but only a portion of these are relayed to
VF0.

With this simpler setup:

+--------------------------+
|               dut        |
|                          |
| +--------------+         |
| |   testpmd    |         |
| +--+-------+---+         |
|    |       |             |
|    |       |             |
|    |       |             |
| +--+--+ +--+--+          |
| | vf0 | | vf1 |          |
| +--+--+ +--+--+          |
|    |       |             |
|    |       |             |
| +--|-------|-----+       |
| |  \      /      |       |
| |   \    /   pf0 |       |
| +----\  /--------+       |
|       ||                 |
+-------||-----------------+
        ||
+-------||---------------------------------+
|       ||                                 |
|       |\--------------------------\      |
|       |          switch           |      |
|       |                           |      |
+-------|---------------------------|------+
        |                           |
+-------|---------------------------|------+
|       |                           |      |
| +-----+-----+                +----+----+ |
| |    pf0    |                |   pf1   | |
| +-----+-----+                +----+----+ |
|       |                           |      |
| +-----+---------------------------+----+ |
| |                                      | |
| |                  trex                | |
| |                                      | |
| +--------------------------------------+ |
|                                          |
|                    tgen                  |
+------------------------------------------+

The maximum line rate of the port can be achieved (37.5M pkt/s total, 18.75M
pkt/s per side).

SOFTWARE
========

~/dpdk# git describe 
v25.11-4-gcd60dcd503b9

~# cat /proc/cmdline
BOOT_IMAGE=(hd0,gpt2)/vmlinuz-6.16.7-100.fc41.x86_64 ... \
        intel_iommu=on iommu=pt default_hugepagesz=1GB hugepagesz=1G
hugepages=32 \
        skew_tick=1 tsc=reliable rcupdate.rcu_normal_after_boot=1 nohz=on \
        isolcpus=10-19,30-39 nohz_full=10-19,30-39 rcu_nocbs=10-19,30-39 \
        tuned.non_isolcpus=3ff003ff intel_pstate=passive nosoftlockup

libibverbs.so.1.14.51.0
libmlx5.so.1.24.51.0

HARDWARE
========

CPU Model name:                          Intel(R) Xeon(R) Silver 4316 CPU @
2.30GHz

SLOT          DRIVER     IFNAME        MAC                LINK/STATE  SPEED  
DEVICE
0000:18:00.0  mlx5_core  enp24s0f0np0  b8:3f:d2:fa:53:86  1/up        25Gb/s 
MT2894 Family [ConnectX-6 Lx]
0000:18:00.1  mlx5_core  enp24s0f1np1  b8:3f:d2:fa:53:87  1/up        25Gb/s 
MT2894 Family [ConnectX-6 Lx]
0000:18:00.2  mlx5_core  enp24s0f0v0   02:aa:aa:aa:aa:00  1/up        25Gb/s 
ConnectX Family mlx5Gen Virtual Function
0000:18:00.3  mlx5_core  enp24s0f0v1   02:aa:aa:aa:aa:01  1/up        25Gb/s 
ConnectX Family mlx5Gen Virtual Function
0000:18:00.4  mlx5_core  enp24s0f0v2   02:aa:aa:aa:aa:02  1/up        25Gb/s 
ConnectX Family mlx5Gen Virtual Function
0000:18:08.2  mlx5_core  enp24s0f1v0   02:cc:cc:cc:cc:00  1/up        25Gb/s 
ConnectX Family mlx5Gen Virtual Function
0000:18:08.3  mlx5_core  enp24s0f1v1   02:cc:cc:cc:cc:01  1/up        25Gb/s 
ConnectX Family mlx5Gen Virtual Function
0000:18:08.4  mlx5_core  enp24s0f1v2   02:cc:cc:cc:cc:02  1/up        25Gb/s 
ConnectX Family mlx5Gen Virtual Function

~# ethtool -i enp24s0f0np0
driver: mlx5_core
version: 6.16.7-100.fc41.x86_64
firmware-version: 26.41.1000 (MT_0000000532)
expansion-rom-version:
bus-info: 0000:18:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: yes

~# ethtool -i enp24s0f1np1
driver: mlx5_core
version: 6.16.7-100.fc41.x86_64
firmware-version: 26.41.1000 (MT_0000000532)
expansion-rom-version:
bus-info: 0000:18:00.1
supports-statistics: yes
supports-test: yes
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: yes

VF CONFIGURATION
================

+ pf0=enp24s0f0np0
+ pf1=enp24s0f1np1

+++ readlink -ve /sys/class/net/enp24s0f0np0/device
++ basename /sys/devices/pci0000:17/0000:17:02.0/0000:18:00.0
+ pci=0000:18:00.0
+ devlink dev eswitch set pci/0000:18:00.0 mode legacy
+ echo 1
+ tee /sys/class/net/enp24s0f0np0/device/sriov_drivers_autoprobe
1
+ echo 3
+ tee /sys/class/net/enp24s0f0np0/device/sriov_numvfs
3

+ ip link set enp24s0f0np0 vf 0 mac 02:aa:aa:aa:aa:00
+ ip link set enp24s0f0np0 vf 1 mac 02:aa:aa:aa:aa:01
+ ip link set enp24s0f0np0 vf 2 mac 02:aa:aa:aa:aa:02
+ ip link set enp24s0f0v0 address 02:aa:aa:aa:aa:00
+ ip link set enp24s0f0v0 up
+ ip link set enp24s0f0v1 address 02:aa:aa:aa:aa:01
+ ip link set enp24s0f0v1 up
+ ip link set enp24s0f0v2 address 02:aa:aa:aa:aa:02
+ ip link set enp24s0f0v2 up

+++ readlink -ve /sys/class/net/enp24s0f0np0/device/virtfn0
++ basename /sys/devices/pci0000:17/0000:17:02.0/0000:18:00.2
+ vf00_pci=0000:18:00.2
+++ readlink -ve /sys/class/net/enp24s0f0np0/device/virtfn1
++ basename /sys/devices/pci0000:17/0000:17:02.0/0000:18:00.3
+ vf01_pci=0000:18:00.3
+++ readlink -ve /sys/class/net/enp24s0f0np0/device/virtfn2
++ basename /sys/devices/pci0000:17/0000:17:02.0/0000:18:00.4
+ vf02_pci=0000:18:00.4

+++ readlink -ve /sys/class/net/enp24s0f1np1/device
++ basename /sys/devices/pci0000:17/0000:17:02.0/0000:18:00.1
+ pci=0000:18:00.1
+ devlink dev eswitch set pci/0000:18:00.1 mode legacy
+ echo 1
+ tee /sys/class/net/enp24s0f1np1/device/sriov_drivers_autoprobe
1
+ echo 3
+ tee /sys/class/net/enp24s0f1np1/device/sriov_numvfs
3

+++ readlink -ve /sys/class/net/enp24s0f1np1/device/virtfn0
++ basename /sys/devices/pci0000:17/0000:17:02.0/0000:18:08.2
+ vf10_pci=0000:18:08.2
+++ readlink -ve /sys/class/net/enp24s0f1np1/device/virtfn1
++ basename /sys/devices/pci0000:17/0000:17:02.0/0000:18:08.3
+ vf11_pci=0000:18:08.3
+++ readlink -ve /sys/class/net/enp24s0f1np1/device/virtfn2
++ basename /sys/devices/pci0000:17/0000:17:02.0/0000:18:08.4
+ vf12_pci=0000:18:08.4

+ ip link set enp24s0f1np1 vf 0 mac 02:cc:cc:cc:cc:00
+ ip link set enp24s0f1np1 vf 1 mac 02:cc:cc:cc:cc:01
+ ip link set enp24s0f1np1 vf 2 mac 02:cc:cc:cc:cc:02
+ ip link set enp24s0f1v0 address 02:cc:cc:cc:cc:00
+ ip link set enp24s0f1v0 up
+ ip link set enp24s0f1v1 address 02:cc:cc:cc:cc:01
+ ip link set enp24s0f1v1 up
+ ip link set enp24s0f1v2 address 02:cc:cc:cc:cc:02
+ ip link set enp24s0f1v2 up

TESTPMD COMMANDS
================

~# cat ./testpmd
set promisc all off

RUNTIME_DIRECTORY=/tmp/outer0 dpdk-testpmd -n 4 -l 0,12,32,13,33 -a
0000:18:00.2 -a 0000:18:00.3  -- \
        --nb-cores 4 --rxq=4 --txq=4 --rxd=2048 --txd=2048 --forward-mode=mac
-i \
        --eth-peer=0,30:3e:a7:0b:f2:54 --eth-peer=1,02:aa:aa:aa:aa:02 \
        --rss-udp --auto-start --cmdline-file=./testpmd --record-burst-stats

RUNTIME_DIRECTORY=/tmp/inner dpdk-testpmd -n 4 -l 0,14,34,15,35 -a 0000:18:00.4
-a 0000:18:08.4 -- \
        --nb-cores 4 --rxq=4 --txq=4 --rxd=2048 --txd=2048 --forward-mode=mac
-i \
        --eth-peer=0,02:aa:aa:aa:aa:01 --eth-peer=1,02:cc:cc:cc:cc:01 \
        --rss-udp --auto-start --cmdline-file=./testpmd --record-burst-stats

RUNTIME_DIRECTORY=/tmp/outer1 dpdk-testpmd -n 4 -l 0,10,30,11,31 -a
0000:18:08.2 -a 0000:18:08.3 -- \
        --nb-cores 4 --rxq=4 --txq=4 --rxd=2048 --txd=2048 --forward-mode=mac
-i \
        --eth-peer=0,30:3e:a7:0b:f2:55 --eth-peer=1,02:cc:cc:cc:cc:02 \
        --rss-udp --auto-start --cmdline-file=./testpmd --record-burst-stats

-- 
You are receiving this mail because:
You are the assignee for the bug.

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-01-13 12:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-13 12:31 [DPDK/other Bug 1867] mlx5: enabling internal VF-to-VF communication causes performance to drop significantly bugzilla

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.