Eri*_*let 9 c# cpu core hyperthreading server
在我的机器上,Windows 7 - Enterprise 1 x Intel Xeon E5-1660 0 @ 3.30Ghz(激活超线程的6核/ CPU),Environment.ProcessorCount返回12,这是准确的.
在具有2 x Intel Xeon E5-2697 v3 @ 2.60GHz的Windows Server 2012上(启动了超线程的14核/ CPU(我认为因为任务管理器显示:2个插槽,28个核心,56个逻辑处理器)),Environment.ProcessorCount返回因为2x14x2 = 56,我们认为这是错误的.
为什么在Windows Server 2012 c#方法Environment.ProcessorCount没有返回正确数量的逻辑处理器?
作为附加信息,环境变量如下:NUMBER_OF_PROCESSORS = 28
更新2015-05-26:
在我的另一个问题中有更多关于此相关错误的详细信息/原因:无法在C#应用程序中为我的线程使用多个处理器组.主要是我认为C#只使用一个处理器组.有什么问题,在我们的服务器上,有2个处理器组,尽管只有56个逻辑处理器.但是这个惠普客户咨询解释了为什么我们的服务器BIOS配置导致错误的窗口.
文档中可能有一个提示:
"如果当前计算机包含多个处理器组,则此属性返回可供公共语言运行库(CLR)使用的逻辑处理器数."
这可能是问题吗?
找到其他有趣的东西:
默认情况下,池仅限于一个处理器组(http://msdn.microsoft.com/en-us/library/windows/desktop/dd405503(v=vs.85).aspx),因此限制为64个核心.但是,在.NET 4.5中,您可以设置Thread_UseAllCpuGroups enabled ="true"标志.
根据<Thread_UseAllCpuGroups>上的MSDN文档,您需要进行以下设置才能看到和使用所有CPU组:
<configuration>
<runtime>
<Thread_UseAllCpuGroups enabled="true"/>
<GCCpuGroup enabled="true"/>
<gcServer enabled="true"/>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6767 次 |
最近记录: |