我正在 Linux(服务器)和 Windows 7(客户端)上开发一些网络应用程序。
不过,我想知道虚拟盒是否是造成网络速度慢的原因。
我想尝试使用 iperf 来查看我的应用程序是否存在问题,并查看真实的吞吐量。
C:\Users\XEN\Downloads>iperf.exe -c 192.168.2.104 -u -p 3000 -w 16000
------------------------------------------------------------
Client connecting to 192.168.2.104, UDP port 3000
Sending 1470 byte datagrams
UDP buffer size: 15.6 KByte
------------------------------------------------------------
[148] local 192.168.2.105 port 58801 connected with 192.168.2.104 port 3000
[ ID] Interval Transfer Bandwidth
[148] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec
[148] Server Report:
[148] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 3.086 ms 0/ 892 (0%)
[148] Sent 892 datagrams
Linux 端:
matt@blaze:~/dev$ iperf -s -p 3000 -u
------------------------------------------------------------
Server listening on UDP port 3000
Receiving 1470 byte datagrams
UDP buffer size: 122 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.2.104 port 3000 connected with 192.168.2.105 port 58800
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 3.625 ms 0/ 894 (0%)
[ 4] local 192.168.2.104 port 3000 connected with 192.168.2.105 port 58801
[ 4] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 3.086 ms 0/ 892 (0%)
看起来太慢了!我正确使用了 iperf 吗?这是 VirtualBox 的问题吗?
更新:看来 TCP 表现更好。我得到了 460Mbits/s。更新 2:使用 UDP 通过 Linux 环回接口的速度为 1.05Mbit/s!Linux 内核是罪魁祸首吗?还是 iperf 只是对 UDP 不起作用?
有任何想法吗?
答案1
关于老问题,但请阅读帮助信息。如果您希望 UDP 发送速度更快,请使用 -b 选项:
-b, --bandwidth #[KM] 对于 UDP,以比特/秒为单位的发送带宽(默认 1 Mbit/秒,隐含 -u)
答案2
回答我自己的问题。
在客户端尝试过这个。
iperf.exe -c 192.168.2.104 -b 1g
结果如下
C:\Users\XEN\Downloads>iperf.exe -c 192.168.2.104 -b 400m
WARNING: option -b implies udp testing
------------------------------------------------------------
Client connecting to 192.168.2.104, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 8.00 KByte (default)
------------------------------------------------------------
[148] local 192.168.2.105 port 50973 connected with 192.168.2.104 port 5001
[ ID] Interval Transfer Bandwidth
[148] 0.0- 4.5 sec 52.9 MBytes 99.6 Mbits/sec
[148] Server Report:
[148] 0.0- 4.4 sec 52.9 MBytes 99.8 Mbits/sec 0.864 ms 0/37719 (0%)
[148] Sent 37719 datagrams
看来 Windows 或 VirtualBox 都有一些 UDP 限制。我无法让它超过 100Mbit。在 Linux 上,我使用相同命令实际上超过了 1Gbit。我注意到 Windows 缓冲区大小只有 8Kb。在 Linux 上是 122Kb。所以我会尝试增加它。
编辑:总之,是的,它有点慢。我会与 VMWare 进行比较,或者尝试 NAT 网络。
答案3
我可以追踪我的交换机的吞吐量很差(甚至从 VirtualBox 主机到其自己的客户机也是如此)。如果可以,请尝试插入另一台交换机 - 甚至拔下电源进行测试。
virtio
如果可以,请尝试NIC 设置。virtio 将我的 udp 数据包丢失从“频繁”减少到“零”。
更新从 OP 的Update
部分(回送很慢)来看,我的建议似乎无关紧要。不过,我会把它们留在这里,以便其他可能带着与我的处方相符的症状来到这里的人受益。