[dpdk-users] Behavior of pktgen's "rate" option

Julien Castets castets.j at gmail.com
Thu Mar 16 14:33:07 CET 2017

I'm benchmarking my DPDK application with pktgen and I don't understand how the
"rate" parameter works.

Let's run pktgen:

$> pktgen -l '0-11' --master-lcore=0 -w 03:00.0 -- -f
/home/jcastets/test.lua -m '[1].0'

(for information, my test.lua is at the bottom of this email)

Here, pktgen generates traffic with one core.

If I set the pktgen "rate" to "20" and the packet size to "64", I would expect
to generate 20% of my NIC's max speed of traffic. In my case with my 40Gbps
NIC, I'd expect to generate 8Gbps of traffic.

And guess what, my expectations are good since with such configuration, pktgen
generates traffic as expected: 8Gbps.


* If I run pktgen with 2 cores (-m '[1-2].0' instead of -m '[1].0'), pktgen
  generates 28Gbps.
* If I run pktgen with 1 core, keep the "rate" at "20" but set the pktsize at
  "128", pktgen generates 14Gbps (where I'd expect it to still generate 8Gbps).

Can please anyone clarify how the rate/pktsize/cores relation works?

### test.lua


pktgen.src_mac("all", "start", "3c:fd:fe:a2:2c:88");
pktgen.dst_mac("all", "start", "3c:fd:fe:a2:2b:b0");

pktgen.src_ip("all", "start", "");
pktgen.src_ip("all", "min", "");
pktgen.src_ip("all", "inc", "");
pktgen.src_ip("all", "max", "");

pktgen.src_port("all", "start", 1234);
pktgen.src_port("all", "min", 1234);
pktgen.src_port("all", "inc", 1);
pktgen.src_port("all", "max", 4096);

pktgen.ip_proto("all", "udp");

pktgen.dst_ip("all", "start", "");
pktgen.dst_ip("all", "min", "");
pktgen.dst_ip("all", "inc", "");
pktgen.dst_ip("all", "max", "");

pktgen.dst_port("all", "start", 1234);
pktgen.dst_port("all", "min", 0);
pktgen.dst_port("all", "inc", 0);
pktgen.dst_port("all", "max", 0);

pktgen.vlan("all", "off");
pktgen.vlan_id("all", "start", 1024);
pktgen.vlan_id("all", "min", 1);
pktgen.vlan_id("all", "inc", 5);
pktgen.vlan_id("all", "max", 3100);

pktgen.pkt_size("all", "start", 128); -- this is the parameter I'm
trying to adjust
pktgen.pkt_size("all", "min", 0);
pktgen.pkt_size("all", "inc", 0);
pktgen.pkt_size("all", "max", 0);

pktgen.set_range("all", "on");

pktgen.set("all", "count", 0); -- count 0 is forever
pktgen.set("all", "rate", 20); -- this is the parameter I'm trying to adjust

Julien Castets

More information about the users mailing list