Linux的KVM客人networking性能比主机慢

我有一个基于KVM linux的虚拟机,由于主机的networking性能在1 Gbps(在内部networking上)运行完美,并使用iperf工具显示networking在主机上运行完美,但客人networking性能慢由于iperf的结果非常奇怪,因为它不是100 Mbps,也不是1 Gbps,所以它的最大值在350到500 Mbps之间。 这是runnin 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 

我testing了不同的networking模型,最好的结果是使用virtio模型任何人都可以帮助获得networking的完整性能和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 

这会影响客人的networking速度吗?

我想你已经在虚拟机中使用了virtio驱动程序,它必须具备良好的networking性能。

您也可以尝试使用相当新的guest端netdev模型,它使用一些先进的内存映射技术来实现更好的networking性能。 您的VM应该使用与virtio驱动程序相同的configuration; 设置启动虚拟机的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 

有了这个configuration,我已经达到了6 Gb / s。

尝试更改以太网驱动程序设置。

/ sbin / ethtool –offload eth0 gso off tso off sg off gro off

看到

https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Host_Configuration_and_Guest_Installation_Guide/ch10s04.html

“如果使用半虚拟化networking驱动程序的性能不佳,请validation主机系统上GSO和TSOfunction的设置。半虚拟化networking驱动程序要求禁用GSO和TSO选项以获得最佳性能。