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

Wiles, Keith keith.wiles at intel.com
Sat Dec 29 16:54:13 CET 2018

> On Dec 29, 2018, at 1:14 AM, Vic Wang(BJ-RD) <VicWang at zhaoxin.com> wrote:
> Hi,

You did not tell me which DPDK and pktgen version you are using.

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

This is not the problem, but see the answer below. You are using four cores and three is the number you need, so change the line from -C 0xf to -l 1-3 using the -l option is easier for most to see and not make mistakes with the core counts and numbers. Alway use -l for all DPDK programs.

> 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 do not use testpmd much so 0xf maybe over kill as well here, may only need -l 2-3, but I could be wrong here. I use pktgen on both sides normally instead of l3fwd or testpmd.

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

Someone already reported this problem and I have it fixed in the ‘dev’ branch of pktgen, but they have not replied if that fixed the problem.

Please grab the ‘dev’ branch out of the git repo and try to see is that fixes the problem.

> Best Regards!
> VicWang
> ?????
> ?????????????????????????????????????????????????????
> 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