VMXNET3的网络性能优于E1000E和E1000。 本文介绍了虚拟网络适配器与第2部分的区别,并介绍了选择半虚拟化适配器所获得的网络性能。

VMware管理员可以将几个不同的虚拟网络适配器连接到虚拟机。 虚拟适配器属于两个组之一。

的模拟:这些虚拟硬件模拟实际的现有物理网络适配器。 (请注意,物理ESXi主机中的物理网卡完全无关。 )虚拟机VMkernel为客户的操作系统提供了一种看起来像特定现实世界的硬件,允许即插即用检测它们并使用本地设备驱动程序。 模拟装置的示例如下所示。

E1000模拟1千兆位英特尔82545 em卡,自2003年生成Windows Server以来,已应用于大多数操作系统。 几乎在创建所有虚拟机时,此卡是默认的,并且被广泛使用。 E1000E为Windows 2012和更高版本模拟了新的真正的网络适配器1千兆位英特尔82574。 E1000E需要虚拟机硬件版本8或更高版本。

上述Windows 2008 R2使用模拟E1000适配器,该适配器使用本机来宾操作系统设备驱动程序。 模拟适配器的优点是开箱即用。 不需要来自VMware的外部代码。 如果需要,PXE还可以用于安装客户的操作系统。 这是因为E1000设备在BIOS启动时已经可用。 另一方面,如果使用默认模拟适配器,则从客户操作系统发送和接收的所有帧都需要额外的工作。 有时每秒几千帧。 虚拟机VMkernel需要实时模拟特定Intel 82545EM或82574卡的准确行为,这需要时间和CPU周期。

半虚拟化:

另一种类型的虚拟网络适配器是半虚拟化的。 最近的一个是VMXNET3。 半虚拟化网卡不作为物理axdxy存在,而是完全由VMware配置的设备。 对于客户操作系统,这通常意味着在操作系统安装阶段,系统主板上的PCI插槽中会检测到未知设备,但实际上没有使用驱动程序。 (注意:某些Linux发行版还预装了VMXNET3驱动程序。 )

对于Windows Server,通常在安装VMware工具并提供设备驱动程序时,客户的操作系统会将其视为名为VMware的NIC制造商的实际axdxy,并将其用作常规网络适配器。 那没有任何理由相信。 除了这是axdxy,就像周围有其他的axdxy一样。

在客户的操作系统中,VMXNET3卡看起来像10千兆位物理设备。有两个过时的半虚拟化适配器: VMXNET和VMXNET2,但在某些情况下还有扩展的VMXNET。 但是,只要虚拟机至少有硬件版本7,就必须仅使用VMXNET3适配器。 VMware使用VMXNET3卡拥有更多的网络组件,从而在虚拟机中提供更多的性能提升。 在模拟的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服务器ip30-p 16-w 64 k

所有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.

Test 3: Windows 2012 R2 with the E1000E adapter

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.

Test 4: Windows 2012 R2 with the VMXNET3 adapter

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/