Azure VM 的任务管理器中仅显示一半 vCPU

将虚拟机 (VM) 迁移到 Azure 时,一些用户报告称,在任务管理器中只能看到预期 vCPU 数量的一半,尽管硬件和设备管理器显示的 CPU 数量是正确的。本文将解释该问题的根本原因,并提供已成功实施的分步解决方案。


问题概述

在迁移了采用D4s v4大小(应有 4 个 vCPU)的 VM 后,用户观察到以下情况:

  • 设备管理器正确显示 4 个 CPU。
  • 任务管理器仅显示 2 个虚拟处理器。
  • PowerShell (Get-ComputerInfo) 仅报告 2 个 CPU。

这种差异可能会引发性能方面的担忧,因为 VM 似乎没有充分利用其分配的资源。


根本原因

该问题通常由超线程被禁用引起。关闭超线程后,VM 会使用物理核心而不是虚拟核心,导致任务管理器中仅显示预期 vCPU 数量的一半。


解决方案

要解决此问题,需要修改Windows 注册表,然后从Azure 门户或通过命令行重启 VM。注意:从客户机 OS 内部重启不足以使更改生效。

修复该问题的步骤

  • 修改注册表项
    在提升的命令提示符或 PowerShell 会话中运行以下命令:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 72 /f 

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f
  • 重启 VM
    从Azure 门户或使用 Azure CLI 执行重启。例如:
az vm restart --name <VM_NAME> --resource-group <RESOURCE_GROUP> 
  • 重要:从客户机 OS 内部重启 VM(例如,通过“开始”菜单)不会应用更改。

验证

完成上述步骤后:

  • 打开任务管理器并验证显示的 vCPU 数量是否正确。
  • 使用 PowerShell 确认 CPU 数量:(Get-ComputerInfo).CsProcessors

问题现在应该已解决,VM 将充分利用其分配的全部资源。


其他说明

  • 此解决方案已由 Azure 支持团队成功测试和实施。
  • 如果超线程是出于特定工作负载而有意禁用的,请在应用此解决方案之前咨询您的团队。

结论

此注册表修改解决了 Azure VM 的任务管理器中仅显示一半 vCPU 的问题。确保配置正确并从 Azure 门户重启 VM 对于修复生效至关重要。按照这些步骤操作,用户可以充分利用分配的 VM 资源并避免性能瓶颈。

发表评论