使用 iperf3 测试网络--length 1000 --no-delay
:
iperf3 --interval 1 --time 3 --no-delay --length 1000 --parallel 100 --client 10.0.0.3
结果:
[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
和--length 1 --no-delay
:
iperf3 --interval 1 --time 3 --no-delay --length 1 --parallel 100 --client 10.0.0.3
结果:
[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
-> 我得到的速度是 2Mbits/秒,而不是 2Gbits/秒。
似乎我遇到了一些硬件或软件限制,导致小数据包无法达到更高的吞吐量
1) 这个限制是什么?
2) 如何检测它?(在 unix 上,是否有命令可以检查它?)
3) 有没有办法增加这个限制?
更新:
让我们计算一下每秒的数据包数:
对于 1000B 有效载荷:PPS = 2.33*1024*1024*1024/8/1000 = 313K
对于 1B 有效载荷:PPS = 2.03*1024*1024/8/1 = 266K
当有效载荷较低时,我们难道不应该期望有更多的数据包吗?