<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<font face="monospace">Hello,</font>
<div class="moz-forward-container"><font face="monospace"> </font>
<font face="monospace"><br>
I want to use hairpin queues to forward high priority traffic
(such as LACP). <br>
My goal is to ensure that this traffic is not dropped in case
the software pipeline is overwhelmed. <br>
But during testing with dpdk-testpmd I can't achieve full
throughput for hairpin queues.<br>
</font> <font face="monospace"><br>
The best result I have been able to achieve for 64B packets is
83 Gbps in this configuration:<br>
$ sudo dpdk-testpmd -l 0-1 -n 4 -a 0000:17:00.0,hp_buf_log_sz=19
-- --rxq=1 --txq=1 --rxd=4096 --txd=4096 --hairpinq=2<br>
testpmd> flow create 0 ingress pattern eth src is
00:10:94:00:00:03 / end actions rss queues 1 2 end / end<br>
<br>
For packets in the range 68-80B I measured even lower
throughput. <br>
Full throughput I measured only from packets larger than 112B</font><font
face="monospace"><br>
<br>
For only one queue, I didn't get more than 55Gbps: <br>
</font><font face="monospace">$ sudo dpdk-testpmd -l 0-1 -n 4 -a
0000:17:00.0,hp_buf_log_sz=19 -- --rxq=1 --txq=1 --rxd=4096
--txd=4096 --hairpinq=1 -i<br>
</font><font face="monospace">testpmd> </font><font
face="monospace">flow create 0 ingress pattern eth src is
00:10:94:00:00:03 / end actions queue index 1 / end<br>
</font> <br>
<font face="monospace">I tried to use locked device memory for TX
and RX queues, but it seems that this is not supported:<br>
"--hairpin-mode=0x011000" (bit 16 - hairpin TX queues will use
locked device memory, bit 12 - hairpin RX queues will use locked
device memory)</font><br>
<br>
<font face="monospace">I was expecting that achieving full
throughput with hairpin queues would not be a problem. <br>
Is my expectation too optimistic? <br>
<br>
What other parameters besides 'hp_buf_log_sz' can I use to
achieve full throughput? </font><br>
<font face="monospace">I tried combining the following parameters:
mprq_en=, rxqs_min_mprq=, mprq_log_stride_num=, txq_inline_mpw=,
rxq_pkt_pad_en=, <br>
but with no positive impact on throughput.</font><br>
<br>
<font face="monospace">My setup:</font><br>
<font face="monospace">DPDK version: commit
76cef1af8bdaeaf67a5c4ca5df3f221df994dc46 (HEAD -> main,
origin/main, origin/HEAD) Date: Wed Apr 3 11:23:20 2024 -0700</font><br>
<font face="monospace">OFED version: MLNX_OFED_LINUX-23.10-0.5.5.0
(OFED-23.10-0.5.5)<br>
</font><font face="monospace">ConnectX-6 device: </font><font
face="monospace">0000:17:00.0 'MT2892 Family [ConnectX-6 Dx]
101d' if=ens1f0np0 drv=mlx5_core unused=</font><br>
<font face="monospace">PCIe version: 4.0</font><br>
<font face="monospace">OS: Oracle Linux Server 8.10</font><br>
<br>
<font face="monospace">Any guidance or suggestions on how to
achieve full throughput would be greatly appreciated.</font><br>
<br>
<font face="monospace">Thank you, </font><br>
<font face="monospace">Mário Kuka</font><br>
<div
class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium">
<div
class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md"><font
face="monospace"><span></span></font>
<div class="flex items-center"><font face="monospace"><span
class="" data-state="closed"><br>
</span></font></div>
</div>
</div>
<br>
<span class="ILfuVd" lang="en"><span class="d9FyLd"
style="display:block"></span></span><br>
<span class="ILfuVd" lang="en"><span class="d9FyLd"
style="display:block"> </span></span> </div>
</body>
</html>