Windows 虚拟机上的网络性能低下或网络延迟时间较长
search cancel

Windows 虚拟机上的网络性能低下或网络延迟时间较长

book

Article ID: 339465

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

Symptoms:
免责声明:本文为 Poor network performance or high network latency on Windows virtual machines (2008925) 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。


具有一个虚拟 CPU 和高 CPU 负载的虚拟机,或笼统地来说具有两个或更多个虚拟 CPU 以及 Windows 2003/2008/7 客户机操作系统的虚拟机,可能会遇到以下症状:
  • 网络性能低下且/或 ping 响应时间较长:

    • 当接收网络流量(不管数据量和类型如何)时
    • 当具有高 CPU 负载或与高利用率虚拟机共享 CPU 资源时

  • 在千兆以太网上观察到的吞吐量可能会减少到 512 kB/s。还可能会观察到超时和连接中断。
  • Ping 回复可能需要多达 20 秒。
  • 敏感服务(如数据库服务器)可能具有较差性能或超时。
  • 虚拟和物理网卡的数目对此问题不起作用。
  • 不同的虚拟网络适配器类型(E1000、VMXNET2 和 VMXNET3)都会出现此问题。
  • 向虚拟机添加更多虚拟 CPU 时,衡量的性能结果(使用诸如 iperf 的工具生成)可能会变得更糟糕。


Environment

VMware ESX Server 3.5.x
VMware ESXi 4.1.x Embedded
VMware ESXi 4.0.x Embedded
VMware vSphere ESXi 5.0
VMware vSphere ESXi 5.5
VMware ESXi 3.5.x Installable
VMware ESXi 3.5.x Embedded
VMware ESX 4.0.x
VMware ESXi 4.1.x Installable
VMware ESXi 4.0.x Installable
VMware ESX 4.1.x
VMware vSphere ESXi 5.1

Cause

导致此问题发生的原因可能有三个:
  • 电源计划

    在 Windows 2008 和 2008 R2 上,电源计划默认设置为平衡。Microsoft 已观察到并确认将电源计划从平衡更改为高性能可能会提高整体性能。有关详细信息,请参见 General Guidelines for Improving Operating System Performance。激进的节电计划可能会对性能产生负面影响,尤其是对延迟敏感型应用程序(如 Web 和数据库服务器)的性能。

  • 较长的 CPU 就绪时间(也称为“%RDY”或“%RDY 时间”)

    注意:此信息是经过简化的,其唯一用途是说明所述问题的原因。不应在本文档上下文之外引用这些信息。虽然此处所用示例足以说明所述问题的原因,但是由于虚拟机 CPU 调度进程的复杂性不要求每个细节在技术上都正确无误。

    此示例基于以下假设:

    • 一个具有已启用超线程的四核 CPU(因此具有 4 个物理 CPU 和 8 个逻辑 CPU)的 ESXi 5.0 主机
    • 一个具有 4 个虚拟 CPU 的 Windows 2008 R2 虚拟机
    • 三个分别具有 2 个虚拟 CPU 的 Windows 2003 虚拟机

    在此配置中,ESXi 主机向虚拟机公开了 8 个逻辑 CPU 和 10 个虚拟 CPU。也就是说,ESXi 主机过载。根据虚拟机的利用率,ESXi 主机将无法为所有虚拟机提供请求的 CPU 时间,因此虚拟机的性能将不如预期。但是,如果多个虚拟机上的负载增加,ESXi 主机必须决定将首先使用当前可用的 CPU 时间为哪台虚拟机提供服务。务必要注意的是,仅当 ESXi 主机能够一次性为特定虚拟机中的所有虚拟 CPU 提供服务时,它才会为多核虚拟机提供服务。否则,将首先为具有较少虚拟 CPU 数目的虚拟机提供服务。虽然这是 CPU 调度程序所应有的工作方式,但是也可能会导致某些虚拟机必须等待很长一段时间才能获得请求的 CPU 时间。在此类情况中,您会观察到整体性能下降且响应时间增加。有关 CPU 调度和 CPU %RDY 时间含义的详细信息,请参见 VMware 技术报告 Performance Troubleshooting for vSphere 4.1

  • 接收方调整 (RSS)

    RSS 是一种机制,允许网络驱动程序在多个 CPU 之间分散传入 TCP 流量,从而提高多核效率和处理器缓存利用率。如果驱动程序或操作系统不能使用 RSS,或者如果已禁用 RSS,则所有传入网络流量将仅由一个 CPU 来处理。在这种情况下,单个 CPU 可能是网络的瓶颈所在,而其他 CPU 可能保持空闲状态。

    注意:要利用 RSS 机制,虚拟机的硬件版本必须是 7 或更高,虚拟网卡必须设置为 VMXNET3,客户机操作系统必须支持该机制且已正确配置。在某些系统上,必须手动启用该机制。以下操作系统可以使用 RSS:

    • Windows 2003 SP2(默认情况下已启用)
    • Windows 2008(默认情况下已启用)
    • Windows 2008 R2(默认情况下已启用)
    • Windows Server 2012(默认情况下已启用)
    • Linux 2.6.37 及更新版本(默认情况下已启用)
有关 Microsoft RSS 的详细信息,请参见 Receive Side Scaling (RSS)。有关 Linux 接收方调整的详细信息,请参见 RSS and multiqueue support in Linux driver for VMXNET3 (2020567)

Resolution

继续执行以下步骤之前,请确保以下事项:
  • 外部基础架构不存在任何问题,例如硬件出现故障或可能的配置错误(常见的配置问题包括 IP 冲突、意外的流量调整、中继和 EtherChannel 端口配置错误)
  • 网络未出现拥堵
  • ESXi 主机所在的网络稳定并按预期运行
  • 已使用 VMXNET3 网络适配器配置了虚拟机
  • 硬件驱动程序和固件版本是最新的
  • BIOS 是最新的且已进行相应配置
  • 虚拟机正在运行最新版本的 VMware Tools(它们包含虚拟机的驱动程序)
  • 任何安全软件(如入侵检测/防御系统或数据包检查器)都具有足够的可用资源且已正确配置(请检查日志,以了解是否存在未正确筛选的流量或丢弃的数据包)
确认基础架构运行状况良好且所有组件都已正确配置后,检查节电配置。对于具有多个虚拟 CPU 的虚拟机,还要检查 CPU %RDY 时间较长是否会对这些虚拟机产生负面影响。

最后一步是检查 RSS 设置。更改 RSS 设置应仅由经过培训的网络管理员来执行。VMware 还建议确认所有相关应用程序(包括操作系统)都支持更改 RSS 配置。


电源计划

为确保系统可以利用可用资源,在调查性能问题时禁用所有节电功能是非常重要的。如果节电配置看起来与性能问题有关,则应创建基于性能和节电要求的自定义电源计划。如果您不确定为系统所建议的节电配置,请咨询硬件供应商。

要在 Windows 2008 Server 上调整电源计划设置,请执行以下操作:

  1. 单击开始,键入 powercfg.cpl,然后按 Enter
  2. 确保已选择高性能选项。

    注意:步骤 3 至 6 是可选的。

  3. 单击更改计划设置
  4. 单击更改高级电源设置
  5. 要启用对所有设置的访问权限,请单击更改当前不可用的设置
  6. 浏览可用设置,并根据需要进行调整。
  7. 单击确定以进行确认,并关闭所有窗口。

    注意:某些更改可能需要重新引导客户机系统。

检查 CPU %RDY 时间

要确定虚拟机是否受较长 CPU %RDY 时间的影响,请使用以下方法之一:
  • 对特定主机或群集上的所有虚拟 CPU 进行计数,然后除以逻辑 CPU 数。结果为 1 或更大意味着,该主机或群集过载,应进行调查。值 4 或更大被视为过载,必须立即进行调查。

    注意
    • 此方法的目的是快速确定主机是否过载,而不是确定它是否没有过载。VMware 建议使用 esxtop 来观察详细的主机性能。
    • 虽然超线程使逻辑处理器的数量增加为原来的两倍,但是它无法提供与两个物理处理器内核相同的性能。如果主机可能过载,请使用物理 CPU 数(而不是逻辑 CPU 数)进行计算。

  • 当在具有受影响虚拟机的主机上运行时,esxtop 命令会显示 CPU %RDY 时间的值。有关如何使用和解释 esxtop 输出的详细信息,请参见 Interpreting esxtop Statistics 社区文档中的环境统计信息部分。还可以运行随 vSphere Management Assistant (vMA) 一起提供的 resxtop
  • vm-support 命令提供了创建性能快照的功能。有关详细信息,请参见 Collecting performance snapshots using vm-support (1967)

要减轻已过载主机的负载,请使用以下方法之一:
  • 将受影响的虚拟机移至具有更多可用资源的主机
  • 将其他虚拟机从主机中移出
  • 减少受影响虚拟机上虚拟 CPU 的数目
注意:客户机操作系统可能不支持更改 CPU 计数。有关详细信息,请联系操作系统供应商。


启用并配置接收方调整 (RSS)

在启用 RSS 之前:
  • 确保将虚拟机的硬件版本设置为版本 7 或更高。有关详细信息,请参见 Virtual machine hardware versions (1003746)
  • 确保将虚拟网络适配器设置为 VMXNET3,且操作系统受此适配器支持。有关详细信息,请参见 Choosing a network adapter for your virtual machine (1001805)
  • 确保在客户机操作系统中启用了 RSS。要在 Windows 客户机操作系统中验证这一点,请打开命令提示符并运行以下命令:

    netsh int tcp show global

    输出指示了是否已启用接收方调整状态。

  • 确保将虚拟机中的网络适配器配置为使用 RSS。要在 Windows 客户机操作系统中验证这一点,请执行以下操作:

    1. 打开设备管理器,导航到网络适配器,然后右键单击要在其上启用 RSS 的适配器。
    2. 在“属性”窗口中,单击高级选项卡,然后单击左侧列表中的 RSS
    3. 更改为已启用,然后单击确定关闭窗口。可能需要重新引导以使所做的更改生效。

      注意:启用/禁用 RSS 功能会将适配器上的网络连接中断几秒钟。如果您正通过远程桌面会话访问系统,请确保可以其他方式访问系统,以防发生会导致网络连接不能返回的问题。
默认情况下,Windows 最多可以将四个 CPU 用于 RSS。

注意:TSO(TCP 分段清除)是某些网卡的一种功能,可用于将 CPU 中分组的数据卸载到网卡。TSO 受 E1000、增强型 VMXNET 和 VMXNET3 虚拟网络适配器支持(但不受普通的 VMXNET 适配器支持)。在 ESXi 上,TSO 已默认在 VMkernel 中启用,但仅当虚拟机正在使用 VMXNET3 设备、增强型 VMXNET 设备或 E1000 设备时,才在这些虚拟机中支持 TSO。TSO 可以提高性能,即使基础硬件不支持 TSO。

Additional Information

如需了解相关信息,请参见:
注意:截至 2014 年 2 月 5 日,上述链接正确无误。如果您发现某链接已损坏,请提供反馈,VMware 员工将会更新该链接。

如果您在 esxtop 中发现丢弃的数据包,请参见 The output of esxtop shows dropped receive packets at the virtual switch (1010071)Poor network performance or high network latency on Windows virtual machines