了解如何使用大型接收卸载 (LRO) 降低因高速处理从网络传入的数据包而产生的 CPU 开销。

LRO 将入站网络数据包重新集合到较大的缓冲区,然后将产生的较大但数量较少的数据包传输到主机或虚拟机的网络堆栈中。与停用 LRO 时相比,CPU 需要处理的数据包减少,从而降低了网络利用率,对于具有高带宽的连接尤为如此。

要从 LRO 性能改进中受益,请在 ESXi 主机的数据路径所涉及的组件上启用 LRO,这些组件包括 VMkernel 和客户机操作系统。默认情况下,VMkernel 和 VMXNET3 虚拟机适配器中会激活 LRO。

有关数据路径中 TCP 数据包聚合的位置的信息,请参见 VMware 知识库文章《了解 VMware 环境中的 TCP 分段卸载 (TSO) 和大型接收卸载 (LRO)》

管理 ESXi 主机上所有 VMXNET3 适配器的硬件 LRO

激活主机物理适配器的硬件功能来汇总 VXMNET3 虚拟机适配器的入站 TCP 数据包,方法是在客户机操作系统中进行组合时使用 LRO 技术而不是消耗资源。

过程

  1. vSphere Client 中,导航到主机。
  2. 配置选项卡上,展开系统
  3. 单击高级系统设置
  4. 编辑 Net.Vmxnet3HwLRO 参数的值。
    • 要激活硬件 LRO,请将 Net.Vmxnet3HwLRO 设置为 1
    • 要停用硬件 LRO,请将 Net.Vmxnet3HwLRO 设置为 0
  5. 单击确定应用更改。

管理 ESXi 主机上所有 VMXNET3 适配器的软件 LRO

如果主机物理适配器不支持硬件 TSO,则在 VMXNET3 适配器的 VMkernel 后端中可使用软件 LRO 来提高虚拟机的网络性能。

vSphere 可为 IPv4 和 IPv6 数据包提供软件 LRO 支持。

前提条件

过程

  1. vSphere Client 中,导航到主机。
  2. 配置选项卡上,展开系统
  3. 单击高级系统设置
  4. 编辑 VMXNET3 适配器的 Net.Vmxnet3SwLRO 参数的值。
    • 要激活软件 LRO,请将 Net.Vmxnet3SwLRO 设置为 1。
    • 要停用软件 LRO,请将 Net.Vmxnet3SwLRO 设置为 0。
  5. 单击确定应用更改。

确保是否为 ESXi 主机上的 VMXNET3 适配器启用了 LRO

在估算运行了延迟敏感型工作负载的主机上的网络性能时,请检查 ESXi 上的 LRO 状态。

前提条件

过程

  1. vSphere Client 中,导航到主机。
  2. 配置选项卡上,展开系统
  3. 单击高级系统设置
  4. 检查 VMXNET2 和 VMXNET3 的 LRO 参数的值。
    • 对于硬件 LRO,请检查 Net.Vmxnet3HwLRO 参数。如果该参数等于 1,则硬件 LRO 已启用。
    • 对于软件 LRO,请检查 Net.Vmxnet3SwLRO 参数。如果该参数等于 1,则硬件 LRO 已启用。

更改 VMXNET 3 适配器的 LRO 缓冲区大小

您可以更改用于通过 VMXNET 3 网络适配器的虚拟机连接的数据包汇总的缓冲区大小。增加缓冲区大小可减少 TCP 确认的数量并提高工作负载的效率。

过程

  1. vSphere Client 中,导航到主机。
  2. 配置选项卡上,展开系统
  3. 单击高级系统设置
  4. Net.VmxnetLROMaxLength 参数输入介于 1 和 65535 之间的值以设置 LRO 缓冲区大小(字节)。
    默认情况下,LRO 缓冲区大小等于 32000 字节。

ESXi 主机上的所有 VMkernel 适配器激活或停用 LRO

ESXi 主机的 VMkernel 网络适配器中使用 LRO 以提高入站基础架构流量的网络性能。

过程

  1. vSphere Client 中,导航到主机。
  2. 配置选项卡上,展开系统
  3. 单击高级系统设置
  4. 编辑 Net.TcpipDefLROEnabled 参数的值。
    • 要对主机上的 VMkernel 网络适配器激活 LRO,请将 Net.TcpipDefLROEnabled 设置为 1
    • 要对主机上的 VMkernel 网络适配器停用软件 LRO,请将 Net.TcpipDefLROEnabled 设置为 0
  5. 单击确定应用更改。

更改 VMkernel 适配器的 LRO 缓冲区大小

您可以更改用于 VMkernel 连接的数据包汇总的缓冲区大小。增加缓冲区大小可减少 TCP 确认的数量并提高 VMkernel 中的效率。

过程

  1. vSphere Client 中,导航到主机。
  2. 配置选项卡上,展开系统
  3. 单击高级系统设置
  4. Net.TcpipDefLROMaxLength 参数输入介于 1 和 65535 之间的值以设置 LRO 缓冲区大小(字节)。
    默认情况下,LRO 缓冲区大小等于 32768 字节。

在 Linux 虚拟机上管理 VMXNET3 适配器上的 LRO

如果在主机上为 VMXNET3 适配器启用了 LRO,则可在 Linux 虚拟机上激活对网络适配器的 LRO 支持,以确保客户机操作系统不会使用资源将入站数据包汇总成较大的缓存。

前提条件

验证 Linux 内核版本是否为 2.6.24 和更高版本。

过程

  • 在 Linux 客户机操作系统的终端窗口中,将 ethtool 命令与 -Klro 选项一起运行。
    • 要激活 LRO,请运行以下命令:
      ethtool -K ethY lro on

      其中,ethY 中的 Y 是虚拟机中网卡的序列号。

    • 要停用 LRO,请运行以下命令:
      ethtool -K ethY lro off

      其中,ethY 中的 Y 是虚拟机中网卡的序列号。

在 Windows 虚拟机上管理 VMXNET3 适配器上的 LRO

如果在主机上为 VMXNET3 适配器启用了 LRO,则可在 Windows 虚拟机上激活对网络适配器的 LRO 支持,以确保客户机操作系统不会使用资源将入站数据包汇总成较大的缓存。

在 Windows 上,LRO 技术也称为接收方合并 (RSC)。

前提条件

  • 验证虚拟机是否在 Windows Server 2012 及更高版本或 Windows 8 及更高版本上运行。
  • 确认虚拟机兼容性为 ESXi 6.0 和更高版本。
  • 验证客户机操作系统上安装的 VMXNET3 驱动程序版本是否为 1.6.6.0 及更高版本。
  • 验证在 Windows Server 2012 及更高版本或 Windows 8 及更高版本上运行的虚拟机上是否已全局启用 LRO。请参见在 Windows 虚拟机上全局管理 LRO

过程

  1. 在客户机操作系统控制面板的网络和共享中心中,单击网络适配器的名称。
    此时对话框将显示适配器的状态。
  2. 单击属性,然后在 VMXNET3 网络适配器类型下单击配置
  3. 高级选项卡上,将接收段合并 (IPv4)接收段合并 (IPv6) 设置为已启用已禁用
  4. 单击确定

在 Windows 虚拟机上全局管理 LRO

要在运行 Windows 8 及更高版本或 Windows Server 2012 及更高版本的虚拟机上的 VMXNET3 适配器上使用大型接收卸载 (LRO),必须在客户机操作系统上全局启用 LRO。在 Windows 上,LRO 技术也称为接收方合并 (RSC)。

过程

  1. 要验证在 Windows 8 及更高版本或 Windows Server 2012 客户机操作系统上是否已全局停用 LRO,请在命令提示符下运行 netsh int tcp show global 命令。
    netsh int tcp show global

    该命令将显示在 Windows 8.x 操作系统上设置的全局传输控制协议 (TCP) 参数的状态。

    TCP 全局参数 ---------------------------------------------- 接收方缩放状态:已启用 烟囱卸载状态:已禁用 NetDMA 状态:已禁用 直接缓存访问 (DCA):已禁用 接收窗口自动调谐级别:正常 附加拥塞控制提供程序:无 ECN 能力:已禁用 RFC 1323 时间戳:已禁用 初始 RTO:3000 接收段合并状态:已禁用 

    如果在 Windows 8 及更高版本或 Windows Server 2012 计算机上全局停用 LRO,则“接收段合并状态”属性将显示为“已禁用”。

  2. 要在 Windows 操作系统上全局启用 LRO,请在命令提示符下运行 netsh int tcp set global 命令:
     netsh int tcp set global rsc=enabled

下一步做什么

为 Windows 8 及更高版本或 Windows Server 2012 虚拟机上的 VMXNET3 适配器启用 LRO。请参见在 Windows 虚拟机上管理 VMXNET3 适配器上的 LRO