首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows 2012 NUMBER_OF_PROCESSORS PowerEdge Gen14上的R2 env var不正确

Windows 2012 NUMBER_OF_PROCESSORS PowerEdge Gen14上的R2 env var不正确
EN

Server Fault用户
提问于 2020-10-14 17:51:52
回答 1查看 517关注 0票数 1

我发现环境变量NUMBER_OF_PROCESSORS在我新安装的运行Windows 2012 R2标准的戴尔740 R2 14上是不正确的。

该机器包含2个CPUs英特尔白金Xeon 8173 M。每个CPU包含28个内核,因此总共有56个核心,但每个核心是超线程的,因此总共有112个线程。我希望看到NUMBER_OF_PROCESSORS=112,但我看到了NUMBER_OF_PROCESSORS=56。我可以进入控制面板,系统和手动更改NUMBER_OF_PROCESSORS的值,但当机器重新启动,它回到56。

需要注意的是,各种系统工具(如msinfo32和Task )都报告了正确数量的处理器、核心和线程。

我在这里找到了一个相关的线程:数字是怎样的_的_处理器env变量生成?,在底部,它建议关闭BIOS中的节点交织。我发现Node交织已经在我的机器上关闭了,但是我决定打开它,结果是NUMBER_OF_PROCESSORS变成了64。

在运行相同操作系统的较旧的戴尔Gen 13机器上,我确实正确地看到了NUMBER_OF_PROCESSORS env设置为number_of_cpus x cores_per_cpu x2。因此,这似乎是一个与戴尔第14代相关的问题。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2020-10-16 09:35:19

NUMBER_OF_PROCESSORS不能指示超过64个处理器,因为这是64位Windows的简单限制。

Windows使用处理器组来管理超过64个处理器,请参阅https://docs.microsoft.com/de-de/windows/win32/procthread/processor-groups

NUMBER_OF_PROCESSORS ENV变量只是一种向软件表明什么是处理资源的方法。在禁用节点交织的情况下,操作系统试图通过仅指示物理内核来防止重载。启用节点交织后,它尝试指示SMT线程,但由于大小太大而失败。"64“是这个"API”的硬限制。这个变量的级别很低,因为它是用于批处理脚本之类的。

有更可靠和更详细的方法来了解CPU设置,这是其他工具所使用的。您可以尝试使用Powershell (Get-CimInstance Win32_ComputerSystem).NumberOfLogicalProcessors,这可能更精确。

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1038736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档