<!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>