首页 > 代码库 > 虚拟网卡性能压测
虚拟网卡性能压测
本文主要介绍多种场景下,虚拟机网卡的压测及性能对比,根据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" ,如下图所示
压测结果发现同场景下虚拟网卡对不同Message Size的延时差别并不大(可能是因为宿主机直接连到同一台switch), 汇总多次延时的压测结果如下:
发包率
虚机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), 汇总多次延时的压测结果如下:
吞吐量
原计划用工具netio压测吞吐量,netio压测吞吐量时vm1的CPU处于非饱满状态,最后选择netperf以多线程脚本向vm1打数据(发包率基础上计算对应Message size的吞吐量)。
注:
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,它们对比情况如下表:
参考链接:
http://filwmm1314.blog.163.com/blog/static/2182591920130309833682/
http://blog.163.com/hlz_2599/blog/static/142378474201341341339314/
http://blog.csdn.net/kozazyh/article/details/4939694
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
虚拟网卡性能压测