我有几台 HP BL460C,正在测试它们以确定当我们开始升级设备时要使用哪种处理器,其中一台的这个环境变量有问题。
该刀片运行的是 Windows 7 Enterprise,NUMBER_OF_PROCESSORS 变量报告有 14 个处理器,但机器中安装了两个 14 核处理器,所以我们应该看到这个数字的两倍。我能够通过 msinfo32 和设备管理器验证机器是否安装了这两个处理器并检测到它们。
是否有什么东西会干扰变量的生成方式?Windows 甚至使用什么过程来设置这个数字?我知道它可以被编辑,但它只是在重启后重置,所以这并没有真正的帮助。如果你们有任何见解,我将不胜感激。
更新:决定将机器重建为 Windows 2008R2,以查看它是否会改变或修复问题,但问题仍然存在。因此,技术上不兼容的配置可能不是原因。
答案1
好的...我真的好奇您为什么要在这些服务器上运行 Windows 7,而不是 Windows 服务器版本。您能详细说明一下您的环境吗?
您正在使用HP ProLiant BL460c Gen9服务器非常高端Intel E5-2697v3 14 核 CPU。
虽然 HP 制造工作站专用刀片服务器直到 Gen8 ProLiant 系列,还没有 Gen9 等效产品。
此时,我怀疑有几件事:
Windows 7 Enterprise 可以支持两个 CPU 插槽和 64 个逻辑核心,但您只看到一个插槽的 CPU。我想您期望看到 28 个核心?
从操作系统角度来看,您的系统是否已完全更新?如果没有,请运行所有操作系统更新。这是几周前在一个非常新的服务器平台上发布的新 CPU。我怀疑您现在找不到其他人拥有这种操作系统和硬件组合。
您的系统固件是否是最新的?如果没有,请更新。
生命值无意此服务器模型不能与 Windows 7 一起使用,所以这样做会破坏您在硬件上运行健康管理代理和增值驱动程序的能力。
你可以使用Windows 2008 R2 驱动程序/固件适用于系统,但完全不受支持。
答案2
据我所知,$ENV:NUMBER_OF_PROCESSORS
它源自 WMI,使用:Win32_ComputerSystem.NumberOfLogicalProcessors
更令人困惑的是,Win32_ComputerSystem
还将物理 CPU 的数量报告为NumberOfProcessors
。
您可以使用WMIC
或 PowerShell 来评估这些值:
Get-WmiObject -Class Win32_ComputerSystem|Select NumberOf*
如果您的机器NumberOfProcessors
仅显示 1,则可能是硬件问题或许可证激活问题,因为只有 Windows 7 的企业版、专业版和旗舰版才能识别多个物理 CPU
答案3
该硬件不支持运行 Windows 7 操作系统,这足以解释为什么它不能正确报告您安装的硬件。 Mathias 回答中的其他原因也可能是最终的原因,但一般来说,“不支持的配置”对于专业系统管理目的来说是一个足够好的解释。
就 Windows 系统而言,BL460C 仅支持 Windows Server OS 2003 及更高版本,并且大多数 HP 服务器硬件也仅支持该版本。
答案4
贾斯汀,我之前发表了一条评论,但没有被视为答案 - 然而它确实为我自己找到了解决方案,因此我在下面重新发布了工作原理和解决方案,以帮助您理解我的场景的逻辑,然后您可以判断您是否有相同的情况。
晚上好,贾斯汀,我发现 HP proliant blade bl460c 第 9 代 windows windows 2012 r2 也存在同样的问题。第 8 代报告的所有内容都正确无误。你找到解决方案了吗?我的发现是“echo %NUMBER_OF_PROCESSORS%”返回不正确的 \ 与 msinfo32、taskmanager 甚至 Get-WmiObject -Class Win32_ComputerSystem | fl Number* 相比,响应不一致
报告的数字是8,正确数字是16。
经过与 HP 和 Microsoft 的讨论,这似乎是由于 NUMA 节点和交错造成的。
通过输入 bies 并将“节点交叉”设置为禁用,解决了这个问题。此后,“%number_of_processors%”变量返回的处理器数量与逻辑任务管理器设置相同。所以这为我解决了这个问题。
有关 NUMA 设置的更多信息,请参阅:http://msdn.microsoft.com/en-us/library/windows/desktop/aa363804(v=vs.85).aspx