我有一台基于 KVM Linux 的虚拟机,因为主机的网络性能在 1 Gbps(在内部网络上)下完美运行,并且使用 iperf 工具显示网络在主机上运行完美,但客户机的网络性能很慢,因为 iperf 结果很奇怪,因为它不是 100 Mbps 也不是 1 Gbps,它的最大速度在 350 到 500 Mbps 之间。这是运行的结果iperf -c servername -P 15
:
[ ID] Interval Transfer Bandwidth
[ 17] 0.0-10.0 sec 68.6 MBytes 57.5 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 18.6 MBytes 15.5 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 5] 0.0-10.0 sec 61.9 MBytes 51.9 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 11] 0.0-10.0 sec 16.0 MBytes 13.4 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 10] 0.0-10.0 sec 24.3 MBytes 20.4 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 15] 0.0-10.0 sec 20.2 MBytes 16.9 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 12] 0.0-10.0 sec 30.2 MBytes 25.3 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 36.2 MBytes 30.3 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 8] 0.0-10.0 sec 23.6 MBytes 19.8 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 9] 0.0-10.0 sec 24.2 MBytes 20.3 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 14] 0.0-10.0 sec 31.0 MBytes 25.9 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 7] 0.0-10.0 sec 16.6 MBytes 13.9 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 6] 0.0-10.0 sec 18.8 MBytes 15.7 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 13] 0.0-10.0 sec 13.3 MBytes 11.2 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 16] 0.0-10.0 sec 29.6 MBytes 24.8 Mbits/sec
[SUM] 0.0-10.0 sec 433 MBytes 363 Mbits/sec
我测试了不同的网络模型,最好的结果是虚拟任何一个模型都可以帮助获得网络的全部性能并达到 1 Gbps。
我想补充一点,当我执行命令时,brctl show
我得到了 fbridge 名称
bridge id STP enabled interfaces
br0 8000.d067e5fb7dec no eth0
vnet0
vnet1
vnet2
br2 8000.d067e5fb7dee no eth1
virbr0 8000.000000000000 yes
这会影响客人的网速吗?
答案1
尝试更改以太网驱动程序设置。
/sbin/ethtool --offload eth0 gso off tso off sg off gro off
如果使用半虚拟化网络驱动程序时遇到性能低下的问题,请验证主机系统上的 GSO 和 TSO 功能的设置。半虚拟化网络驱动程序要求禁用 GSO 和 TSO 选项,以获得最佳性能。
答案2
我认为您已经在虚拟机中使用了 virtio 驱动程序,它必须具有良好的网络性能。
您还可以尝试使用相当新的guest
netdev 模型,它使用一些高级内存映射技术来实现更好的网络性能。您的虚拟机应使用与 virtio 驱动程序相同的配置;设置启动虚拟机的 kvm 参数应如下所示(根据您的需要进行修复):
-netdev tap,vhost=on,ifname=vnet0,id=guest0,script=/path/to/custom/tap-ifup,downscript=no \
-device virtio-net-pci,netdev=guest0,mac=00:16:3e:47:aa:53
通过这种配置,我实现了 6 Gb/s。
答案3
为了获得最佳网络性能,使用虚拟KVM 中主机的定义中的驱动程序。
例如:
<interface type='bridge'>
<source bridge='virbr0'/>
<mac address="46:AD:2B:48:00:00"/>
<model type='virtio'/>
</interface>
这可能需要额外的 virtio 驱动程序。它们位于可安装在虚拟主机上的 CD 中。(源代码https://github.com/virtio-win/kvm-guest-drivers-windows和二进制下载https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.217-1/)