了解如何在 VMkernel 网络适配器和虚拟机中使用 TCP 分段卸载 (TSO),提高具有严格延迟要求的工作负载中的网络性能。

物理网络适配器和 VMkernel 及虚拟机网络适配器传输路径的 TSO 可降低 TCP/IP 网络操作的 CPU 开销,从而提高 ESXi 主机的性能。如果启用 TSO,网络适配器会将较大的数据块(而非 CPU)分为多个 TCP 分段。VMkernel 和客户机操作系统可以使用更多的 CPU 周期运行应用程序。

要从 TSO 提供的性能改进中受益,请在 ESXi 主机上通过数据路径启用 TSO,包括物理网络适配器、VMkernel 和客户机操作系统。默认情况下,在 ESXi 主机的 VMkernel 及 VMXNET 2 和 VMXNET 3 虚拟机适配器中启用 TSO。

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

在 VMkernel 中管理软件 TSO

如果物理网络适配器运行 TSO 时遇到问题,则可以在 VMkernel 中临时启用 TSO 软件模拟,直到问题解决。

过程

  • 运行这些 esxcli network nic software set 控制台命令以在 VMkernel 中激活或停用 TSO 软件模拟。
    • 在 VMkernel 中激活 TSO 软件模拟。
      esxcli network nic software set --ipv4tso=1 -n vmnicX
      esxcli network nic software set --ipv6tso=1 -n vmnicX
    • 在 VMkernel 中停用 TSO 软件模拟。
      esxcli network nic software set --ipv4tso=0 -n vmnicX
      esxcli network nic software set --ipv6tso=0 -n vmnicX

    其中,vmnicX 中的 X 表示主机上的网卡端口号。

    此配置更改在主机重新引导后仍然保留。

如何确定 ESXi 主机上的物理网络适配器是否支持 TSO

在估算运行延迟敏感型工作负载的主机上的网络性能时,检查物理网络适配器是否卸载 TCP/IP 数据包分段。如果物理网络适配器支持 TSO,则 TSO 在默认情况下处于启用状态。

过程

  • 运行以下控制台命令以确定 TSO 在主机的物理网络适配器上是否处于启用状态。
    esxcli network nic tso get

ESXi 主机上管理 TSO

在传输路径上激活 TCP 分段卸载 (TSO) 可让网卡将较大的数据块分为多个 TCP 分段。停用 TSO 以使 CPU 执行 TCP 分段。

默认情况下,如果主机的物理适配器支持硬件 TSO,则主机可使用硬件 TSO。

过程

  1. vSphere Client 中,导航到主机。
  2. 配置选项卡上,展开系统
  3. 单击高级系统设置
  4. 编辑 Net.UseHwTSO(适用于 IPv4)和 Net.UseHwTSO6(适用于 IPv6)参数的值。
    • 要激活 TSO,请将 Net.UseHwTSONet.UseHwTSO6 设置为 1
    • 要停用 TSO,请将 Net.UseHwTSONet.UseHwTSO6 设置为 0
  5. 单击确定应用更改。
  6. 要重新加载物理适配器的驱动程序模块,请在主机的 ESXi Shell 中运行 esxcli system module set 控制台命令。
    1. 要停用驱动程序,请将 esxcli system module set 命令与 --enabled false 选项一起运行。
      esxcli	system module set	--enabled false --module nic_driver_module
    2. 要激活驱动程序,请将 esxcli system module set 命令与 --enabled true 选项一起运行。
      esxcli	system module set	--enabled true --module nic_driver_module

结果

如果物理适配器不支持硬件 TSO,则 VMkernel 会将来自客户机操作系统的大型 TCP 数据包分段并其发送至适配器。

如何查明是否在 ESXi 主机上启用了 TSO

在估算运行延迟敏感型工作负载的主机上的网络性能时,检查硬件 TSO 在 VMkernel 中是否处于启用状态。默认情况下,硬件 TSO 在 ESXi 主机上处于启用状态。

过程

  1. vSphere Client 中,导航到主机。
  2. 配置选项卡上,展开系统
  3. 单击高级系统设置
  4. 检查 Net.UseHwTSONet.UseHwTSO6 参数的值。
    Net.UseHwTSO 显示 IPv4 的 TSO 状态,而 Net.UseHwTSO6 显示 IPv6 的 TSO 状态。如果属性设置为 1,则 TSO 处于启用状态。

在 Linux 虚拟机上管理 TSO

在 Linux 虚拟机的网络适配器上激活 TSO 支持,以便客户机操作系统将需要分段的 TCP 数据包重定向到 VMkernel。

前提条件

  • 确保 ESXi 支持 Linux 客户机操作系统。

    请参见《VMware 兼容性指南》文档。

  • 验证 Linux 虚拟机网络适配器是否为 VMXNET2 或 VMXNET3。

过程

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

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

管理 Windows 虚拟机上的 TSO

默认情况下,在 Windows 虚拟机的 VMXNET2 和 VXMNET3 网络适配器上激活 TSO。出于性能考虑,您可能需要停用 TSO。

前提条件

  • 确保 ESXi 支持 Windows 客户机操作系统。请参见《VMware 兼容性指南》文档。
  • 验证 Windows 虚拟机网络适配器是否为 VMXNET2 或 VMXNET3。

过程

  1. 在 Windows 控制面板的“网络和共享中心”文件夹中,单击网络适配器的名称。
  2. 单击其名称。
    此时对话框将显示适配器的状态。
  3. 单击属性,然后在网络适配器类型下单击配置
  4. 高级选项卡上,将大量发送卸载 V2 (IPv4)大量发送卸载 V2 (IPv6) 属性设置为已启用已禁用
  5. 单击确定
  6. 重新启动虚拟机。