E1000、E1000E和VMXNET3虛擬網絡卡對比測試
VMware管理員可以使用幾個不同的虛擬網路介面卡來附加到虛擬機器。虛擬介面卡屬於以下兩個組之一:
模擬:
這些是虛擬硬體,可以模擬實際的現有物理網路介面卡。(請注意,物理ESXi主機中的物理網絡卡是完全無關的。)VMkernel將向來賓作業系統提供某些內容,看起來與某些特定的實際硬體完全相同,並且來賓可以通過即插即用來檢測它們並使用本機裝置驅動程式。
模擬裝置的示例包括:
E1000–將模擬1 Gbit的Intel 82545EM卡,自Windows Server 2003生成以來,適用於大多數作業系統。該卡是建立幾乎所有虛擬機器時的預設設定,並且被廣泛使用。
E1000E–模擬更新的真實網路介面卡1 Gbit Intel 82574
上面在帶有模擬E1000介面卡的Windows 2008 R2中,正在使用本機來賓作業系統裝置驅動程式。
模擬網路介面卡的積極方面是它們“開箱即用”,不需要VMware的外部程式碼。由於E1000裝置已在BIOS啟動時可用,因此它甚至可以用於(如果需要)通過PXE安裝來賓作業系統。
不利的一面是,使用預設的模擬介面卡時,從來賓作業系統傳送或接收的每個幀都需要額外的工作(每秒可能成千上萬個)。
VMkernel必須“實時”模擬特定Intel 82545EM或82574卡的確切行為,這將花費時間和CPU週期。
半虛擬化:
虛擬網路介面卡的另一種型別是
半虛擬化網絡卡不作為物理NIC存在,而是完全由VMware“組成”的裝置。對於來賓作業系統,這將意味著它通常在OS安裝階段僅感覺到未知裝置位於(虛擬)母板上的PCI插槽中,但沒有驅動程式可以實際使用它。
(注意:某些Linux發行版甚至預安裝了VMXNET3驅動程式。)
對於Windows Server,通常通過安裝VMware Tools來提供裝置驅動程式時,來賓作業系統會將其視為來自某些網絡卡製造商稱為“ VMware”的真實NIC,並將其用作普通網路介面卡。除了周圍的其他NIC之外,沒有其他理由相信這是NIC。
對於來賓作業系統,VMXNET3
注意:還有兩個過時的半虛擬化介面卡,稱為VMXNET和VMXNET2(有時稱為“增強型VMXNET”),但是,只要虛擬機器至少具有硬體版本7,則應僅使用VMXNET3介面卡。
由於帶有VMXNET3卡的VMware甚至在VM內部擁有更多的網路元件,因此可以實現許多效能增強。使用模擬的E1000 / E1000E,核心必須模擬現有的來賓系統介面卡的確切行為,但是使用VMXNET3,它可以建立經過優化以在虛擬環境中使用的“完美”虛擬介面卡。
下面,我們將測試當今兩個最常見的Windows作業系統:Windows 2008 R2和Windows 2012 R2的網路吞吐量,並檢視VMXNET3與E1000和E1000E的效能。
為了生成大量網路流量,我使用了在兩個虛擬機器上執行的iperf工具,一個虛擬機器為“客戶端”,另一個為“伺服器”。我發現以下iperf設定為Windows Server上的網路吞吐量測試生成了最佳組合:
伺服器:iperf -s -w 64k -l 128k
客戶端:iperf -c <伺服器IP> -P 16 -w 64k -l 128k -t 30
該測試是在HP Proliant Bl460c Gen8上完成的,虛擬機器在同一物理主機上執行,無論物理主機/刀片之間的物理網路連線如何,都可以檢視網路效能。
E1000,E1000E和VMXNET3上的所有設定均為預設設定。有關VMXNET3卡設定可能進行的調整的更多資訊,將在後面的文章中介紹。
(當然,請注意,以下結果僅是對一種特定硬體和ESXi配置進行測試所得的觀察結果,絕不是“科學”研究。)
測試1:使用預設E1000介面卡的Windows 2008 R2
兩臺Windows 2008 R2虛擬機器,一臺作為iperf伺服器,另一臺作為客戶端,測試執行時間為30秒。
如工作管理員檢視中所述,1 Gbit連結速度已最大化。一個有點有趣的事實是,即使使用模擬的E1000介面卡,也可以使用比1 Gbit鏈路“應有”更多的使用量。
從iperf客戶端輸出中,我們可以看到,使用預設的E1000虛擬介面卡,我們的總吞吐量為每秒2.65 Gbit。
測試2:帶有VMXNET3介面卡的Windows 2008 R2
工作管理員檢視報告Iperf客戶端VM中10 Gbit連結的利用率約為39%。
在執行測試的過程中,iperf輸出顯示VMXNET3的總吞吐量為4.47 Gbit /秒。
與Windows 2008 R2上的E1000卡相比,VMXNET3介面卡的網路吞吐量提高了近70%。
測試3:帶有E1000E介面卡的Windows 2012 R2
該E1000E是一個較新的,更加“增強”的E1000版本。對於來賓作業系統,它看起來像物理介面卡Intel 82547網路介面卡。
然而,即使它是一個較新的介面卡,它沒有實際提供更低比E1000介面卡的吞吐量。
兩個執行Windows 2012 R2的虛擬機器,其中iperf工具作為客戶端和伺服器執行。
E1000E的速度為1.88 Gbit / s,大大低於Windows 2008 R2上原始E1000的2.65 Gbit / s。
測試4:帶有VMXNET3介面卡的Windows 2012 R2
現在執行VMXNET3介面卡的兩個Windows 2012 R2虛擬機器獲得以下iperf結果:
吞吐量為4.66 Gbit / sec,非常接近Windows 2008 R2上的VMXNET3的結果,但比新的E1000E高出近150%。
總之,與E1000和E1000E相比,VMXNET3介面卡可提供更高的網路吞吐效能。另外,至少在此測試設定中,較新的E1000E的效能實際上要比較舊的E1000差。
該測試是在Windows Server虛擬機器上完成的,VMXNET3介面卡的最高吞吐量約為4.6 Gbit / sec,這可能是TCP實施受到限制的結果。具有其他TCP堆疊的其他作業系統可能會達到更高的數量。還應注意的是,這些測試僅用於網路吞吐量,但是當然還有其他因素,可能會在後面的文章中進一步討論。