linux KVM 客户机网络性能比主机慢

linux KVM 客户机网络性能比主机慢

我有一台基于 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 驱动程序,它必须具有良好的网络性能。

您还可以尝试使用相当新的guestnetdev 模型,它使用一些高级内存映射技术来实现更好的网络性能。您的虚拟机应使用与 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/

相关内容