[dpdk-users] it seems something wrong in pktgen .

Vic Wang(BJ-RD) VicWang at zhaoxin.com
Sat Dec 29 08:14:35 CET 2018


I use dpdk and pktgen-dpdk to test the performance of the platform performance .
The system configuration as follows:
Senders: Intel i5-6600k with two sumsang ddr4 drams (dual channel), one intel XL710 40G NIC.
Command: ./pktgen -C 0xf -n 2 -- -P -m "2.0,3.1"
The packet size set to 64 bytes.

Receiver: Intel i5-660k with two sumsang ddr4 drams(dual channel), one intel XL710 40G NIC.
Command: ./testpmd -C 0xf -n2 -- -i --portmask=0x3 --coremask=0xc
However, when starting to forward the packets, the pktgen will stop after sending severl thousands packets .

I trace the question, and I found it seems something wrong in pktgen program.
In the pktgen_send_pkts, if the pg_pktmbuf_alloc_bulk fails because nobufs, it can't goto the pktgen_send_burst forever. So it can't free mbuf in the pktgen_send_burst , and it will be failed every loop when pg_pktmbuf_alloc_bulk.
>static __inline__ void
>pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
>     uint32_t flags;
>     int rc = 0;
>     flags = rte_atomic32_read(&info->port_flags);
>     if (flags & SEND_FOREVER) {
>            rc = pg_pktmbuf_alloc_bulk(mp,
>                                    info->q[qid].tx_mbufs.m_table,
>                                    info->tx_burst);
>            if (rc == 0) {
>                   info->q[qid].tx_mbufs.len = info->tx_burst;
>                   info->q[qid].tx_cnt += info->tx_burst;
>                   pktgen_send_burst(info, qid);
>            }
>     } else {
>            int64_t txCnt;

This is my thought, please comment me.

Best Regards!

This email contains confidential or legally privileged information and is for the sole use of its intended recipient. Any unauthorized review, use, copying or forwarding of this email or the content of this email is strictly prohibited.

More information about the users mailing list