How to mitigate the degradation of Mellanox ConnectX-5 forwarding performance when MULTI_SEGS is activated?

In order to test the performance degradation of packet fragmentation and multi-segment transmission.
I used DPDK 23.03 and add rx offload capabilities: DEV_RX_OFFLOAD_SCATTER
and tx offload capabilities: DEV_TX_OFFLOAD_MULTI_SEGS.

In addition, I change the size of the mbuf so that multiple mbufs can store a data packet together. Surprisingly, when we use 512B mbuf to store 256B packets, the forwarding bandwidth of Mellanox will still decrease. However, the Mbuf with a size of 512B can store 256B packets without using multiple segments. So this performance drop is not due to packet fragmentation.

So what is the reason for this performance drop? Is there any way to suppress this performance drop?

The test results can be found in the attachment.
test-THROUGHPUT.pdf (13.6 KB)

1 Like

A supplementary note, working with the OP. In the graph the SEGS refer to the segment size of RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT.

That means even if we have a huge, single segment but send 64byte packets, there is a huge performance degradation.