本文主要介紹多種場景下,虛擬機網卡的壓測及性能對比,根據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