- Enable DPDK log levels (first thing to try)
Run your app with:
--log-level=8
What you’ll see:
- RX descriptor handling
- buffer allocation/recycling
- PMD behavior
- Enable mbuf debug checking (very useful)
Rebuild DPDK with:
CONFIG_RTE_LIBRTE_MBUF_DEBUG=y
This will:
- Validate mbuf consistency
- Catch:
- corrupted metadata
- reused mbuf incorrectly
- invalid refcnt
- Enable mempool debug
CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=y
Helps detect:
- double allocation
- cache corruption
- same buffer returned twice from mempool
- Poison/free tracking (EXTREMELY useful)
You can enable memory overwrite checking:
CONFIG_RTE_MALLOC_DEBUG=y
and
--mp-alloc=debug
This helps detect:
- overwrite before/after mbuf
- hidden memory corruption
- Quick isolation trick (VERY effective)
Run
testpmd -- -i
Then:
set fwd rxonly
start
If duplication disappears:
If still happens:
- PMD / HW / queue config issue