Using iperf3 to test the network with --length 1000 --no-delay
:
iperf3 --interval 1 --time 3 --no-delay --length 1000 --parallel 100 --client 10.0.0.3
Result:
[SUM] 0.00-3.00 sec 835 MBytes 2.33 Gbits/sec 13 sender
[SUM] 0.00-3.01 sec 835 MBytes 2.33 Gbits/sec receiver
With --length 1 --no-delay
:
iperf3 --interval 1 --time 3 --no-delay --length 1 --parallel 100 --client 10.0.0.3
The result:
[SUM] 0.00-3.00 sec 751 KBytes 2.05 Mbits/sec 5 sender
[SUM] 0.00-3.02 sec 751 KBytes 2.03 Mbits/sec receiver
-> I am getting 2Mbits/sec instead of 2Gbits/sec.
It seems like I am hitting some hardware or software limit somewhere prevents small packets from reaching a higher throughput
1) What could that limit be?
2) How to detect it? (on unix, is there a command to check it?)
3) Is there a way to increase that limit?
UPDATE:
Let's calculate the packets per seconds:
For 1000B payload: PPS = 2.33*1024*1024*1024/8/1000 = 313K
For 1B payload: PPS = 2.03*1024*1024/8/1 = 266K
Shouldn't we expect to have more packet when the payload is lower?