本文主要介紹多種場景下,虛拟機網卡的壓測及性能對比,根據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://www.cnblogs.com/gaozhengwei/p/7101269.html