在我们的虚拟化系列测试文章中,我们IT168评测中心面对了虚拟应用中的各种问题。其中有一个问题就是,在建立虚拟机的时候,虚拟网卡应该选择哪一个?它们有什么区别?
' |: e/ i5 u# r& GVMware ESX Server提供了两种虚拟网卡:Enhanced vmxnet和Intel E1000 在比较久的年代,VMware Workstation和VMware GSX Server上提供的是古老的AMD PCNet10/100Mbps虚拟网卡,其时VMware通过一种类似部分虚拟化的vmxnet优化虚拟网卡的方式提供了10/100/1000Mbps性能,无疑性能更好,然而时过境迁,现在的VMware ESX Server提供了IntelE1000的千兆虚拟网卡,它和vmxnet虚拟网卡哪一种更适合实际应用呢?
我们通过WebBench的静态页面测试来测试各种环境下的网络性能,在我们以往的测试当中,这个可以吃掉大量的带宽,20多台客户机的负载就可以将一个千兆网卡耗尽。 测试基于我们实验室的一台DELL PowerEdge 2950服务器,配置了两个Intel 45nm Xeon E5430处理器。 WebBench是针对服务器作为WebServer时的性能进行测试,我们在被测服务器上安装了IIS6.0组件,以提供测试所需的Web服务。在测试中我们开启了网络实验室中的60台客户端,分别使用了WebBench 5.0内置的动态CGI以及静态页面脚本对服务器进行了测试。 ) Q+ y8 G. j/ a# N5 P/ |
静态测试是由客户端读取预先放置在服务器Web Server下的Web页面(wbtree),这项测试主要考察的是服务器磁盘系统以及网络连接性能。我们使用了实验室中的60台客户端,配合Static_mt.tst多线程静态脚本测试向被测服务器发送请求。! J! a' m9 A7 ?
* q8 @% \/ C: T* S x; v& Y! p
DELL 2950测试平台
. B8 n$ a$ f# E( @ | 主板 | DELL | 处理器 | Xeon E5430 x 2 | 主频 | 2.66GHz | FSB | 1333MHz | L1容量 | 64K(Data容量为32K) | L2容量 | 12MB(共享) | 芯片组 | Intel 5000X | 内存 | 2GB FBD DDR2 667 SDRAM x 82 s0 b- `& X& e/ }5 k
无虚拟化:16GB
. U! x* X0 O. g9 c+ m, hESX Server:16GB
( Y5 A/ Y. H L2 S# @虚拟化:8GB | 磁盘控制器 | LSI Logic MegaRAID SAS 8408ELP | 硬盘 | Seagate Cheetah 146GB 15K.5 SAS x 3 | 硬盘设置 | RAID 5,条带大小64KB,适应性预读,Cached IO | Windows硬盘设置 | 主系统分区30GB,次分区50GB,NTFS格式 | 操作系统 | VMware ESX Server 3.5.0 646072 t+ D3 l) x3 I
Windows Server 2003 R2 Enterprise x64 Edition SP2 N) C7 h- U2 }5 g+ t
with IIS 6.0 | 网卡 | Broadcom BCM5708C千兆网卡 X 48 B+ e6 R& m* j% ~
虚拟化:VMware vmxnet X 4
7 V7 Z. L/ L! \4 ^9 V( O, V虚拟化:Intel E1000 X 4 | 网卡驱动程序 | 无虚拟化:Broadcom x64
! k4 z& Q5 `1 \) Z虚拟化:VMware vmxnet driver m# ?9 v+ S6 O
虚拟化:Intel PRO Set 13.0 x64 | 我们采用了评测中心的一台DELL 2950服务器,配置了双路Intel 45nm XeonE5430处理器,频率为2.66GHz,支持SSE4.1指令集,最主要是支持Intel VT技术(VirtualizationTechonology),它可以降低虚拟机切换的损耗,从而提升虚拟化应用上的效率。关于硬件级别的虚拟化辅助技术,详细可以参见:从VT-x到VT-d Intel虚拟化技术发展蓝图。服务器还使用了Intel 5000X芯片组,提供24MB的SnoopFilter缓存,这可以提升高负荷时的内存/处理器性能。主操作系统的磁盘系统则是3块15000RPM的Cheetah15K.5,并通过一块PCIe x8的LSI MegaRAID SAS 8408ELP来组建RAID 5阵列。$ ^9 h1 c, W+ ^+ v7 R$ Z# G
我们使用了4块Broadcom BCM5708C千兆网卡,在没有虚拟化的Windows下使用了Broadcom驱动的Team功能。
测试未虚拟化的时候,我们安装了Windows Server 2003R2 x64操作系统,并使用启动参数将可用处理器限制为4个——因为目前VMware ESXServer只支持每个虚拟机最多4个处理器。未虚拟化条件下我们使用了Broadcom驱动的Team功能,将4块Broadcom千兆网卡捆绑为一块高带宽的“网卡”。 测试虚拟化的时候,我们安装了VMware ESX Server 3.5.064607,这是一个推出仅数月的新产品,可以支持包括VT-x、VT-d在内的硬件辅助虚拟化技术,对性能的提升很有帮助。我们在一个292GB的RAID 5阵列上采用默认分配的方式安装了ESX Server 3.5.0,并安装了一个Windows Server 2003 R2x64,这个虚拟的服务器具有4个处理器和8GB的内存(因为不可能把实际服务器的16GB完全分配给虚拟机)。
2 ~7 N: ?/ F5 C5 c9 N : }/ ~) s/ {% O; N0 {% A# u
VMware ESX Server自带的网络链路聚合功能 VMware ESX Server的Bare-Metal裸操作系统底层支持链路聚合功能,我们当然首先尝试了这个功能……实际表明,至少在我们的平台上,这个功能没有什么效果。
7 [, h4 D1 |! I+ v# l: X/ ^一个虚拟机最多4块虚拟网卡
% K4 B P& A5 A; F: Q- A3 ]4 w全部设置为Intel E1000虚拟网卡,在设备管理器里面显示为Intel PRO/1000 MT网卡 这时我们可以做出这样的虚拟机网络配置:4块Intel E1000虚拟网卡,分别分配到4个实网卡上。
( G$ l( d# J3 v1 R% G" x2 A( _& @2 k9 R
通过Intel的PRO Set驱动,可以实现容错、负载平衡、链路聚合等高级功能。
' z) t C' m/ K( c' `+ e3 l0 h# o虚拟化静态Web性能对比
在单块虚拟网卡的情况下,Intel E1000的方式比vmxnet的方式性能更高,带宽利用上要高出10%~15%以上。我们知道静态Web性能测试就是比拼网络带宽。 接着我们测试了多虚拟网卡下的性能表现,结果令人沮丧:4块vmxnet虚拟网卡的性能和单块vmxnet的性能表现毫无区别,下图采用的是4块Intel E1000虚拟网卡分别分配到4块Broadcom实网卡上的方式,并利用了Intel ProSet的链路聚合功能,它和实际无虚拟化下的4块Broadcom网卡链路聚合性能相比较。
/ }* `' e/ v0 h/ N* b2 [7 VVirtual Intel E1000 x4 VS Broadcom x4
+ G) M8 |! z# M
Virtual Intel E1000 x4测试过程中的网络占用图 可以看出,4块Intel E1000虚拟网卡链路聚合可以提供很高的网络带宽。
. ?* } c$ F% O5 w' [2 M- xVirtual Intel E1000 x4 VS Broadcom x4
我们顺便也作了动态Web性能测试,结果比较奇怪,IntelE1000虚拟网卡在低客户端的情况下性能高约10%~15%,而在28个客户机之后突然开始性能下降,这个现象不正常——就整个绝对性能来说,也不符合4个虚拟处理器的性能表现,我们估计这跟实际的网卡不是Intel网卡而是Broadcom网卡有关。
IT168评测中心观点
4 i0 g6 p' r n$ |8 t 我们的测试表明,就网络带宽上,Intel E1000方式性能更好,不仅单网卡性能比vmxnet方式高10%~15%,而且可以利用链路聚合、负载均衡等高级功能。. {$ g& j- P+ ?) l
我们也注意到VMware ESX Server使用的是自己的网卡驱动程序,虽然ESXServer底层操作系统和Linux很像,然而驱动程序无法直接共用,因此在不同的网卡的支持程度可能会很有不同。我们认为即使是通过了VMwareESX Server认证的网卡上,也是Intel E1000方式性能更好。
8 y7 l `. y" {# c# ^4 y" M 在我们的实验环境下,VMware ESX Server采用Intel E1000网卡提供的带宽更高 |