我们前面介绍了VMware ESXi 6.7中的适配器类型性能(VMWare ESXi中,不同的虚拟网卡性能竟然能相差三倍!),当时的配置项主要为E1000e和VMXNET3,性能相差大概有3倍之多。
后来给服务器升级到了7.0U3版本(豁出去了,真机带业务演示一把ESXi 6.7升级7.0 U3),记得当时还说7.0版本改进了存储和网络等功能,可以提供更好的性能和可靠性,正好借此机会小测一下。
碰巧的是,我现在查看适配器类型,可以看到有E1000、E1000e、SR-IOV直通和VMXNET3共4种类型,相比上次我们测试的多了两种。
首先说明一下,因为服务器的配置问题,暂时不支持配置为SR-IOV直通类型。SR-IOV(Single Root I/O Virtualization)是一种将PCIe设备(如网卡)共享给虚拟机的技术,允许将一个单一的物理设备(如网卡或GPU)被虚拟化并分配给多个虚拟机,通过为虚拟机提供独立的内存空间、中断、DMA流,来绕过VMM实现数据访问,进而达到优化资源分配、降低延迟、提高性能和增强安全性等效果。
但主要是因为我的网卡为板载网卡,从ILO中进行查看,可以看到网卡位置是Embedded,指服务器内置的,非PCIe设备,暂不支持直通。
在网络中查看物理网卡详细信息,可以看到“直接路径IO支持”状态也是“否”。
同样的,我们还可以在管理页面的“硬件”页签中查看PCI设备,其中网卡的SR-IOV状态为“不支持”。不过别着急,我最近已经在研究买一块PCIe网卡了,到时候可以再试一试。
回到虚拟机网卡配置中,如果我们将适配器类型选择为“SR-IOV直通”,则物理功能没有可选项,配置失败。
如果我们将适配器类型选择为“E1000e”,在Windows系统中,我们会看到识别的网卡型号是82574L,该虚拟网卡模拟的就是1 Gbit速率的Intel 82574网络适配器,特别针对Windows 2012或更高版本进行了性能优化。
如果我们将适配器类型选择为“E1000”,在Windows系统中,我们会看到识别的网卡型号是PRO/1000 MT,经查,该虚拟网卡模拟的是1 Gbit速率的Intel 82545EM网络适配器,可以支持Windows Server 2003及以后的操作系统版本。
而如果我们直接将适配器类型修改为“VMXNET3”,在Windows系统中,会出现识别异常的情况。
此时,需要连接网络进行驱动更新,更新完成之后,识别的网络类型为vmxnet3,和选择的类型描述相同,是一种半虚拟化适配器,通过前面的测试(VMWare ESXi中,不同的虚拟网卡性能竟然能相差三倍!),我们可以发现它提供了更好的性能,对操作系统而言,VMXNET3看起来像一个10 Gbit速率的物理网卡。
具体能选择哪些适配器类型,我发现和客户机操作系统相关,常用的操作系统类型和支持的适配器类型如下所示。
所以,VMware ESXi的网卡选择顺序应该是SR-IOV > VMXNET3 > E1000e > E1000,如果存在无法使用特定驱动程序或兼容性等原因,建议按照推荐顺序以及选择,以有效提升网络性能。
所以今天的主要任务是测试一下在ESXi 7.0U3中,这三种网卡的性能差距到底有多大。
因为只有Windows桌面系统支持E1000网卡,所以我们本次用Windows 10专业版来做个简单的性能测试。为了测试相对公平,我们新建两台虚拟机,使用相同安装镜像版本,均启用Windows基于虚拟化的安全性,配置8核CPU、8 GB内存,份额均配置为高,力争提高性能;硬盘均使用精简置备的100 GB磁盘;挂载4块网卡,除管理网卡之外,另外3块网卡分别使用E1000、E1000e和VMXNET3类型,并且接入到同一个vSwitch中。
安装完操作系统之后,确认网卡状态正常,开始测试。
测试1:VMXNET3直连
选择两台主机的VMXNET3网卡,配置好IP地址,用iperf2进行打流测试。
经过6次测试(线程2、4、8,对调服务端和客户端),测得最大瞬时带宽为20.2 Gbps,平均带宽值为19.3 Gbps。
测试2:E1000e直连
选择两台主机的E1000e网卡,配置好IP地址,用iperf2进行打流测试。
经过6次测试,测得最大瞬时带宽为11.2 Gbps,平均带宽值为8.77 Gbps。
测试3:E1000直连
选择两台主机的E1000网卡,配置好IP地址,用iperf2进行打流测试。
经过6次测试,测得最大瞬时带宽为5.75 Gbps,平均带宽值为4.97 Gbps。
总结
通过本次的3个测试可知,VMWare ESXi通过对虚拟机的性能进行优化,使得虚拟机之间的网络交换不受底层网卡的限制。虽然E1000和E1000e模拟的是千兆网卡,但实际性能仍然不止千兆;虽然VMXNET3模拟的是万兆网卡,实际性能也可以超出万兆。两者底层都不需要对应物理网卡,这点是SR-IOV直通所不支持的。
通过组合对比,E1000网卡的转发性能最差,E1000e的性能大概能达到E1000的两倍,而VMXNET3的性能大概接近E1000的四倍;在本次测试中,VMXNET3的性能大概只有E1000e性能的两倍,比Linux系统测得的三倍数据稍低。当然,不排除操作系统和测试工具的问题(79.55 Gbps!已经初步测得VMWare ESXi 6.7的vSwitch转发性能),因为我们之前都是使用iperf3的单线程测试的,数据可能存在偏差。
所以,最起码我们可以确认,VMware ESXi 7.0U3的最佳实践依旧是配置虚拟机的网络适配器类型为VMXNET3,相比于E1000e和E1000,能大幅提升网络性能。