与E1000E和E1000相比,VMXNET3的网络性能更好。本文将解释虚拟网络适配器和第2部分之间的区别,并将演示通过选择半虚拟化适配器可以获得多少网络性能。
VMware管理员可以将几个不同的虚拟网络适配器附加到虚拟机上。虚拟适配器属于两个组中的任何一个:
模拟的:这些虚拟硬件模拟真实的现有物理网络适配器。(注意,物理ESXi主机中的物理网卡是完全不相关的。)VMkernel将向客户操作系统提供一些东西,这些东西看起来就像一些特定的现实世界硬件,客户可以通过即插即用的方式检测它们,并使用本地设备驱动程序。仿真设备的例子如下:
E1000将模拟1 Gbit Intel 82545EM卡,自2003年Windows Server生成以来,适用于大多数操作系统。在创建几乎所有虚拟机时,该卡都是默认的,并被广泛使用。E1000E模拟了一个新的真正的网络适配器,1 Gbit Intel 82574,适用于Windows 2012或更高版本。E1000E需要VM硬件版本8或更高版本。
上面的Windows 2008 R2中使用了一个模拟的E1000适配器,其中使用了本机客户操作系统设备驱动程序。仿真网络适配器的优点是它们可以开箱即用,不需要来自VMware的外部代码。它甚至可以用于(如果需要的话)由PXE安装客户操作系统,因为E1000设备在BIOS启动时就已经可用了。消极的一面是,当使用默认的模拟适配器时,从客户操作系统发送或接收的每一帧都需要额外的工作(可能每秒数千帧)。VMkernel必须实时模拟特定Intel 82545EM或82574卡的确切行为,这将花费时间和CPU周期。
半虚拟化:
另一种类型的虚拟网络适配器是半虚拟化的。最近的一个是VMXNET3。半虚拟化网卡不作为物理NIC存在,而是完全由VMware组成的设备。对于客户操作系统,这意味着通常在OS安装阶段,它只感觉到一个未知的设备位于(虚拟)主板上的PCI插槽中,但是它没有实际使用它的驱动程序。(注意:有些Linux发行版甚至预装了VMXNET3驱动程序。)
对于Windows Server,当提供设备驱动程序(通常通过安装VMware工具)时,客户操作系统会将其视为来自某个名为VMware的网卡制造商的真实NIC,并将其用作普通的网络适配器。它没有理由相信任何事情,除了这是一个NIC就像任何其他NIC在周围。
对于客户操作系统,VMXNET3卡看起来像一个10 Gbit的物理设备。注意:还有两个过时的半虚拟化适配器称为VMXNET和VMXNET2(有时是增强的VMXNET),但是只要虚拟机至少有硬件版本7,就应该只使用VMXNET3适配器。由于VMware使用VMXNET3卡拥有更多的网络组件,甚至在VM内部也可以实现许多性能增强。使用模拟的E1000/E1000E,内核必须对客户模拟现有适配器的确切行为,但是使用VMXNET3,它可以创建一个完美的虚拟适配器,优化后可以在虚拟环境中使用。在本文的第2部分中,我们将看到性能差异究竟有多大。
与仿真的E1000E和E1000相比,VMware半虚拟化VMXNET3的网络性能更好。在第一篇文章中解释了适配器类型之间的一般区别。在本文中,我们将测试当今最常见的两种Windows操作系统:Windows 2008 R2和Windows 2012 R2中的网络吞吐量,并查看VMXNET3与E1000和E1000E的性能。
为了生成大量的网络流量,我使用了运行在两台虚拟机上的iperf工具,一台是iperf客户机,另一台是服务器。我发现以下iperf设置生成的最佳组合网络吞吐量测试Windows Server:服务器:iperf - s - w 64 k - l 128 k客户:iperf - c <服务器ip > 30 - p 16 - w 64 k - l 128 k - t测试是惠普把Bl460c Gen8的虚拟机是相同的物理主机上运行能够看到物理网络的网络性能,无论物理主机/叶片之间的联系。
E1000、E1000E和VMXNET3上的所有设置都是默认设置。关于VMXNET3卡设置可能的调整的更多信息将在后面的文章中解释。(当然,需要注意的是,以下结果只是对一个特定硬件和ESXi配置的测试的观察结果,并不是科学研究。)
Test 1: Windows 2008 R2 with the default E1000 adapter
两个Windows 2008 R2虚拟机,一个作为iperf服务器,另一个作为客户机,测试在30秒内运行。正如在任务管理器视图中所指出的,1 Gbit链接速度已经达到了最大值。一个比较有趣的事实是,即使使用模拟的E1000适配器,也可以在1 Gbit链接上使用更多的适配器。
从iperf客户机输出可以看到,使用默认的E1000虚拟适配器,我们可以达到每秒2.65 Gbit的总吞吐量。
Test 2: Windows 2008 R2 with the VMXNET3 adapter、
The Task Manager view reports utilization around 39% of the 10 Gbit link in the Iperf client VM.
The iperf output shows a total throughput for VMXNET3 of 4.47 Gbit / second over the time the test was conducted.
The VMXNET3 adapter demonstrates almost 70 % better network throughput than the E1000 card on Windows 2008 R2.
E1000E是E1000更新、更强大的版本。对于客户操作系统,它看起来像物理适配器Intel 82547网络接口卡。然而,即使它是一个较新的适配器,它实际上提供的吞吐量也低于E1000适配器。
Two virtual machines running Windows 2012 R2 with the iperf tool running as client and server.
E1000E got 1.88 Gbit / sec, which is considerable lower than the 2.65 Gbit/s for the original E1000 on Windows 2008 R2.
The two Windows 2012 R2 virtual machines now running with VMXNET3 adapter got the following iperf results:
The throughput was 4.66 Gbit/sec, which is very close to the result of VMXNET3 on Windows 2008 R2, but almost 150 % better than the new E1000E.
总之,VMXNET3适配器比E1000和E1000E提供了更多的网络吞吐量性能。另外,至少在这个测试设置中,较新的E1000E的性能实际上低于较旧的E1000。测试是在Windows Server虚拟机上完成的,VMXNET3适配器的最高吞吐量约为4.6 Gbit/秒,这可能是TCP实现的限制造成的。使用其他TCP堆栈的其他操作系统可能获得更高的数字。还需要注意的是,这些测试只是针对网络吞吐量,当然还有其他因素,这些因素可能会在后面的文章中进一步讨论。
参考文献:http://rickardnobel.se/vmxnet3-vs-e1000e-and-e1000-part-2/