I have a server setup that uses MT27800 (ConnectX5), and when I tried to increase rx_desc to 32768, I observed 100% imisses.
Test setup
DPDK version: 22.11
driver: mlx5_core
version: 5.7-1.0.2
firmware: 16.35.4506 (MT_0000000011)
dpdk-testpmd -l 1-10 -n 4 -a 0000:45:00.0,rxq_comp_en=1,rxq_pkt_pad_en=1 – -i –max_pkt_len=4096 –rxq=8 –txq=8 nb_cores=8 –rxd=32768 –enable_drop_en –enable_scatter
After doing some tracing to the DPDK source code, it seems that the following code may have overflow issue:
Under DPDK source → drivers/net/mlx5/mlx5_devx.c
/*
* For vectorized Rx, it must not be doubled in order to
* make cq_ci and rq_ci aligned.
*/
if (mlx5_rxq_check_vec_support(rxq_data) < 0)
cqe_n *= 2;
The above mentioned code seems to double the amount of cqe for non-vectorized rx, which may leads to overflow.
I further confirmed that when I set my set up to MTU 1500 (vectorized mode), there isnt 100% imisses, but when I set my MTU to 4096 (non-vectorized), 100% imiss occurred.
I also upgraded my setup to use the latest version of DPDK version (25.11), same observations were made.
As I am not very familiar with the mlx5 driver, could NDIVIA assist to check if the above mentioned causing the overflow from 32768 to 65536 which resulted to 0 for uint16_t type?