gpt4 book ai didi

c# Environment.ProcessorCount 并不总是返回逻辑处理器的完整数量,为什么?

转载 作者:太空狗 更新时间:2023-10-29 18:24:53 32 4
gpt4 key购买 nike

在我的机器上,Windows 7 - 企业版,配备 1 x Intel Xeon E5-1660 0 @ 3.30Ghz(6 核/CPU,超线程已激活),Environment.ProcessorCount 返回 12,这是准确的。

在配备 2 个 Intel Xeon E5-2697 v3 @ 2.60GHz 的 Windows Server 2012 上(14 个内核/cpu,激活了超线程(我认为是因为任务管理器显示:2 个插槽,28 个内核,56 个逻辑处理器)),环境.ProcessorCount 返回 28,这在我们看来是错误的,因为 2x14x2 = 56。

为什么在 Windows Server 2012 上,c# 方法 Environment.ProcessorCount 没有返回正确数量的逻辑处理器?

作为附加信息,环境变量如下:NUMBER_OF_PROCESSORS=28

TaskManager

2015-05-26 更新:

在我的其他问题中有此相关错误的更多详细信息/原因:Unable to use more than one processor group for my threads in a C# app .主要是我认为 C# 确实只使用一个处理器组。奇怪的是,在我们的服务器上,虽然只有 56 个逻辑处理器,但有 2 个处理器组。但是这个HP CUSTOMER ADVISORY解释为什么我们的服务器 bios 配置导致错误的窗口。

最佳答案

文档中可能有提示:

“如果当前机器包含多个处理器组,则此属性返回可供公共(public)语言运行时 (CLR) 使用的逻辑处理器的数量。”

这可能是这里的问题吗?

MSDN Article

发现了一些有趣的东西:

默认情况下,池被限制为单个处理器组 (http://msdn.microsoft.com/en-us/library/windows/desktop/dd405503(v=vs.85).aspx),因此限制为 64 个内核。但是,在 .NET 4.5 中,您可以设置 Thread_UseAllCpuGroups enabled="true"标志。

MSDN Forum Post

关于c# Environment.ProcessorCount 并不总是返回逻辑处理器的完整数量,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27965962/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com