本文主要介绍多种场景下,虚拟机网卡的压测及性能对比,根据openstack实际的部署方式,虚拟机网卡压测场景包括 SRIOV(passthrough)、SRIOV+Macvtap(passthrough)、Vlan+Linux bridge、OVS+Linux Bridge,分别从协议类型(TCP/UDP)、Message Size方向压测虚拟机网卡的时延、发包率、吞吐量。

压测环境

host1:  服务器型号:IBM x3550m2

              CPU型号:Intel(R) Xeon(R) CPU*8,每个CPU有4核,共32核

              内存大小:32GB

              硬盘大小:SAS 500G*2

              网卡:Intel 82576 Gigabit (Driver:igb)

 

host2:  服务器型号:IBM x3550m2

              CPU型号:Intel(R) Xeon(R) CPU*8,每个CPU有4核,共32核

              内存大小:32GB

              硬盘大小:SAS 500G*2

              网卡:Intel 82576 Gigabit (Drvier:igb)

 

vm1:   vcpu:1

             内存大小:1GB

             硬盘大小:sda : 40GB

             IP:  192.168.20.101/24 (Driver:igbvf/virtio_net)

虚拟机网卡压测

在开发环境下压测虚拟机网卡,连接宿主机的端口设置成Trunk,仅允许指定Vlan的数据通过,以至无法直接压测宿主机的物理网卡。为了保证压测正常进行,进出宿主机物理网卡的数据都打上tag(SRIOV指定VF的vlan,Linux bridge连接vlan子接口,OVS设置port的tag)。本次使用netperf工具压测,宿主机host1内创建虚拟机vm1,宿主机host2与vm1互发送数据进行压测,运行python脚本使虚拟机vm1的CPU状态接近饱满, 同时关闭host1、host2、vm1的iptables。

延时

虚机CPU处于非饱满状态下压测网卡延时,host1使用netperf 向 vm1发送数据(TCP/UDP),netperf 命令行:netperf -H 192.168.20.101 -t omni -- -d rr -T UDP -O "THROUGHPUT, THROUGHPUT_UNITS, MIN_LATENCY, MAX_LATENCY, MEAN_LATENCY"  ,如下图所示

esxi 网速慢 esxi网卡性能_服务器

压测结果发现同场景下虚拟网卡对不同Message Size的延时差别并不大(可能是因为宿主机直接连到同一台switch), 汇总多次延时的压测结果如下:

esxi 网速慢 esxi网卡性能_esxi 网速慢_02

发包率

虚机CPU处于非饱满状态下压测网卡延时,host1启动150个netserver, vm1同时启动150个netperf进程向host1发数据,直达vm1的CPU饱满状态。运行netperf命令行:netperf -t TCP_RR  -H 192.168.20.101 -l 60 -p 12856 -- -r 64 64 (请求/应答报文为64Bytes), 汇总多次延时的压测结果如下:

 

esxi 网速慢 esxi网卡性能_服务器_03

吞吐量

原计划用工具netio压测吞吐量,netio压测吞吐量时vm1的CPU处于非饱满状态,最后选择netperf以多线程脚本向vm1打数据(发包率基础上计算对应Message size的吞吐量)。

 

esxi 网速慢 esxi网卡性能_UDP_04

注:

1.压测的虚机网卡driver是 virtio_net,与openstack创建的虚机保持一致,virtio_net的性能远高于配默认的8139cp。

2.pktgen工具不能压测SRIOV(ptkgen发包时不能绑定到VF,因为pktgen是从内核直接发包,会造成dst_mac的最后一个字节与VF生成的网卡关联,如VF对应eth5则dst_mac则会变为xx:xx:xx:xx:xx:e5)。

3.引起延时的因素比较多:本地主机与服务器路由跳数,网络带宽,处理带宽。netperf测延时的结果明显比ping的延时低。


后记

从上面的压测数据得出:

1.SRIOV性能高于其它场景

2.SRIOV+Macvtap性能高于Vlan+Linux bridge、OVS+Linux bridge

3.Vlan+Linux bridge性能高于OVS+Linux bridge

但是SRIOV也有局限性如特定型号网卡支持、千兆网卡只支持7个VF、不支持迁移。SRIOV+Macvtap可解决热迁移的问题,相对于Vlan+Linux bridge和OVS+Linux bridge有性能有提升,openstack用SRIOV+Macvtap解决SRIOV热迁移的BP还没有实现,Vlan+Linux bridge性能稍高于OVS+Linux bridge。对虚拟机网卡的性能要求特别高同时不考虑迁移,用SRIOV比较合适。对网络管理要求比较高(gre,vxlan),只能用OVS+Linux bridge。

压测工具

本次压测尝试了多个压测工具netperf、iperf、netio、pktgen,它们对比情况如下表:

esxi 网速慢 esxi网卡性能_esxi 网速慢_05

 

参考链接:

    http://filwmm1314.blog.163.com/blog/static/2182591920130309833682/

    http://blog.163.com/hlz_2599/blog/static/142378474201341341339314/

    

    https://www.kernel.org/doc/Documentation/networking/pktgen.txt

    http://mp.weixin.qq.com/s?__biz=MzAxOTAzMDEwMA==&mid=402362721&idx=1&sn=4b729bd3678af519aeb174571bdc2d8e&scene=23&srcid=1202K1QgMANMuRjQLwqvZOoV#rd