E1000 与 VMXNET3的 区别

         与E1000E和E1000相比,VMXNET3的网络性能更好。本文将解释虚拟网络适配器和第2部分之间的区别,并将演示通过选择半虚拟化适配器可以获得多少网络性能。

         VMware管理员可以将几个不同的虚拟网络适配器附加到虚拟机上。虚拟适配器属于两个组中的任何一个:

e1000-emulated

模拟的:这些虚拟硬件模拟真实的现有物理网络适配器。(注意,物理ESXi主机中的物理网卡是完全不相关的。)VMkernel将向客户操作系统提供一些东西,这些东西看起来就像一些特定的现实世界硬件,客户可以通过即插即用的方式检测它们,并使用本地设备驱动程序。仿真设备的例子如下:

E1000将模拟1 Gbit Intel 82545EM卡,自2003年Windows Server生成以来,适用于大多数操作系统。在创建几乎所有虚拟机时,该卡都是默认的,并被广泛使用。E1000E模拟了一个新的真正的网络适配器,1 Gbit Intel 82574,适用于Windows 2012或更高版本。E1000E需要VM硬件版本8或更高版本。

vmxnet-8a

上面的Windows 2008 R2中使用了一个模拟的E1000适配器,其中使用了本机客户操作系统设备驱动程序。仿真网络适配器的优点是它们可以开箱即用,不需要来自VMware的外部代码。它甚至可以用于(如果需要的话)由PXE安装客户操作系统,因为E1000设备在BIOS启动时就已经可用了。消极的一面是,当使用默认的模拟适配器时,从客户操作系统发送或接收的每一帧都需要额外的工作(可能每秒数千帧)。VMkernel必须实时模拟特定Intel 82545EM或82574卡的确切行为,这将花费时间和CPU周期。vmxnet3-paravirtualized-a

半虚拟化:

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

vmxnet-driver

对于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的性能。

vmxnet3-iperf-1

为了生成大量的网络流量,我使用了运行在两台虚拟机上的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

vmxnet-10

两个Windows 2008 R2虚拟机,一个作为iperf服务器,另一个作为客户机,测试在30秒内运行。正如在任务管理器视图中所指出的,1 Gbit链接速度已经达到了最大值。一个比较有趣的事实是,即使使用模拟的E1000适配器,也可以在1 Gbit链接上使用更多的适配器。

e1000

从iperf客户机输出可以看到,使用默认的E1000虚拟适配器,我们可以达到每秒2.65 Gbit的总吞吐量。

Test 2: Windows 2008 R2 with the VMXNET3 adapter

vmxnet-12

The Task Manager view reports utilization around 39% of the 10 Gbit link in the Iperf client VM.

vmxnet3-2008r2-iperf

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-3

E1000E是E1000更新、更强大的版本。对于客户操作系统,它看起来像物理适配器Intel 82547网络接口卡。然而,即使它是一个较新的适配器,它实际上提供的吞吐量也低于E1000适配器。

e1000e-2

Two virtual machines running Windows 2012 R2 with the iperf tool running as client and server.

e1000e-nic

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

vmxnet-2

The two Windows 2012 R2 virtual machines now running with VMXNET3 adapter got the following iperf results:

vmxnet-1a

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-vs-e1000

总之,VMXNET3适配器比E1000和E1000E提供了更多的网络吞吐量性能。另外,至少在这个测试设置中,较新的E1000E的性能实际上低于较旧的E1000。测试是在Windows Server虚拟机上完成的,VMXNET3适配器的最高吞吐量约为4.6 Gbit/秒,这可能是TCP实现的限制造成的。使用其他TCP堆栈的其他操作系统可能获得更高的数字。还需要注意的是,这些测试只是针对网络吞吐量,当然还有其他因素,这些因素可能会在后面的文章中进一步讨论。

参考文献:http://rickardnobel.se/vmxnet3-vs-e1000e-and-e1000-part-2/

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DPDK e1000驱动是针对英特尔e1000网卡的一种高性能驱动程序。它使用DPDK框架中的API,通过绕过Linux内核协议栈,直接与网络硬件进行交互,从而提高了网络性能。DPDK e1000驱动的主要工作方式包括初始化、DMA配置和中断处理等,其实现代码主要分布在“lib/librte_e1000_em”和“lib/librte_pmd_e1000_em”两个目录下。 DPDK e1000驱动的初始化过程主要包括初始化硬件设备、动态配置硬件寄存器和设置驱动程序的相关参数等。驱动初始化时,会对网卡进行复位,并设置MAC地址、RSS多队列等参数。此外,驱动还会初始化一些硬件性能参数,如帧大小、Jumbo帧支持等。 在DMA配置方面,DPDK e1000驱动会使用DPDK提供的rte_mempool来管理内存池,对接收和发送的数据包进行缓存和预先分配内存,避免了重复的内存申请和管理操作,从而提升了驱动程序的效率。 在中断处理方面,DPDK e1000驱动会通过rte_intr_enable()和rte_intr_unmask()函数来使能网卡接收中断,并使用rte_eth_rx_burst()和rte_eth_tx_burst()函数提高接收和发送的效率。此外,DPDK e1000驱动还支持RSS多队列技术,可以将接收到的数据包划分到不同的队列中处理,提高网络的处理能力和负载均衡能力。 总之,DPDK e1000驱动在单个处理器上能够达到每秒数百万个数据包的处理速度,是一种高性能的网络驱动程序,广泛应用于云计算、大数据等高性能计算领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值