emmericp / MoonGen

MoonGen is a fully scriptable high-speed packet generator built on DPDK and LuaJIT. It can saturate a 10 Gbit/s connection with 64 byte packets on a single CPU core while executing user-provided Lua scripts for each packet. Multi-core support allows for even higher rates. It also features precise and accurate timestamping and rate control.
MIT License
1.04k stars 234 forks source link

Two Questions regarding throughput measurements #270

Closed harshgondaliya closed 4 years ago

harshgondaliya commented 4 years ago

I have two conceptual questions regarding throughput results shown in l3-load-latency.lua test:

  1. What doeswith framingmean in the below output?
    
    [Device: id=1] RX: 1.95 Mpps, 1000 Mbit/s (1313 Mbit/s with framing)
    [Device: id=0] TX: 1.95 Mpps, 1000 Mbit/s (1313 Mbit/s with framing)

2. As I increase packet size (84, 104 .... 204), the result of Mpps decreases and Mbits increases.
I want to understand the reason behind these two trends, especially about the increment in Mbits. 
Because, for a given configuration, the total number of bits transferred per second should remain the same, I feel.
emmericp commented 4 years ago
  1. Framing refers to overhead on layer 1, i.e., a full link will show the line rate with framing but not without framing.

  2. Depends on the NIC and rate control mechanism you are using. Hardware rate control is unfortunately not consistent between different vendors. For example, some NICs account for the CRC checksum some don't.

It is usually best to use Mpps as the main metric

harshgondaliya commented 4 years ago

Ok got it. Thanks a lot.