Hi all,
I was measuring the latency with the new Intel E810. I first used
testpmd application with a single core and a single pair of queues and measured
the latency on the generator side. The problem is that a latency bump occurs
when the background traffic is above a certain threshold. I noticed that the
threshold would move (at different rate of background traffic) depending on the
speed of the recv and xmit function (i.e. bulk, SSE or AVX2)
To identify where the bump occurs, I added hardware timestamp support
to the application. I enabled rx hardware timestamp offload capability of E810,
used rte_eth_timesync_read_time after rte_eth_rx_burst returns and
rte_eth_timesync_read_tx_timestamp after rte_eth_tx_burst returns. I found the
latency bump occurs between the packet arrives at the PHY Core and
rte_eth_tx_burst returns. I also measures the CPU cycles before
rte_eth_rx_burst is called and rte_eth_tx_burst returns in the user space. The
gap in CPU cycles is stable regardless of the background traffic. This means
the bump resides between the packet arrives the NIC and the packet is extracted
from the main memory via rte_eth_rx_burst.
Meanwhile I failed to find any DPDK latency report from Intel nor
mails from those who might experience the same problem. Does anyone meet the
same problem and probably know what happens between the packet is in the PHY
Core and the packet is in the memory? Maybe Intel Validation Team?
I guess it may relate to packet discarding logic in the firmware or the
DMA process. I saw this issue on different servers and different versions of
firmware or DDP as well.
Configuration of the server:
CPU: Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz
RAM: DDR4 11 x 32 GB, 2933 MHz, 6 Channels
OS: Ubuntu 20.04.2 LTS
Kernel: 5.4.0-89-generic
Ice kernel driver version: 1.6.7
OS default DDP version: 1.3.26
Firmware version: 3.0
Traffic generator: MoonGen with two Mellanox ConnectX-5 EN 100G NICs
Best Wishes
Pan