Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 即使启用了Thread_UseAllCpuGroups,Environment.ProcessorCount也未显示正确的数字_C#_.net_Windows_Cpu Cores - Fatal编程技术网

C# 即使启用了Thread_UseAllCpuGroups,Environment.ProcessorCount也未显示正确的数字

C# 即使启用了Thread_UseAllCpuGroups,Environment.ProcessorCount也未显示正确的数字,c#,.net,windows,cpu-cores,C#,.net,Windows,Cpu Cores,我有一个客户机运行的系统具有双Xeon Platinum 8160超线程24核CPU和用于64位工作站的Windows 10 Pro。当他运行我的应用程序时,Environment.ProcessorCount报告有32个逻辑处理器可供CLR使用。客户在这个系统上花了很多钱,希望我的应用程序使用所有96个逻辑处理器。没问题!根据Microsoft的文档,我对app.config进行了以下设置 <runtime> <Thread_UseAllCpuGroups ena

我有一个客户机运行的系统具有双Xeon Platinum 8160超线程24核CPU和用于64位工作站的Windows 10 Pro。当他运行我的应用程序时,Environment.ProcessorCount报告有32个逻辑处理器可供CLR使用。客户在这个系统上花了很多钱,希望我的应用程序使用所有96个逻辑处理器。没问题!根据Microsoft的文档,我对app.config进行了以下设置

  <runtime>
    <Thread_UseAllCpuGroups enabled="true"/>
    <GCCpuGroup enabled="true"/>
    <gcServer enabled="true"/>
  </runtime>

这应该允许CLR和my app访问客户端计算机上的所有逻辑处理器。但遗憾的是,Environment.ProcessorCount仍然报告32而不是96。我错过了什么

我已经检查过他的系统有两个处理器组,每个处理器组有48个逻辑处理器。映射到两个物理套接字的两个NUMA内核。因此,如果我没有真正获得访问这两个处理器组的权限,我可以看到environment.ProcessorCount给我的结果是48,但我不知道它是从哪里得到32的

更新

我让这个客户运行Eric Ouellet的SharpTestProcessorThreading应用程序。以下是他的结果:


因此,我脑海中仍然存在的一个大问题是,为什么WMI报告96个全局逻辑处理器和环境。LogicalProcessorCount报告48个全局逻辑处理器?第二个NUMA节点上的零位处理器掩码是否是一个可能导致逻辑处理器计数不匹配的问题?

也许您需要WorkstationEdition而不是Pro。我读过一篇针对同一问题的文章,但我现在找不到。这是一个很好的观点。刚刚与客户核实,他已经在为工作站运行Pro。我将更新问题以反映这一点。谢谢这里有很多链接,而这些链接又指向。这两个问题都有大量潜在的有用的背景资料!第二个链接让我查看了我的项目设置。VisualStudio在创建项目时设置了首选32位选项。所以我关闭了它,向客户端发送了一个仅64位的构建,机器现在向CLR报告了48个可用的逻辑核。这就是一个完整的处理器组。我正在取得进展,但我仍然不明白为什么设置Thread_UseAllCpuGroups不能同时为我提供48个组。有人有其他建议吗?我真的很感激!检查事项:如果
Processor.ProcessorAffinity
给出了任何信息(应该是所有的,表示没有关联),您的配置是否实际应用(输入故意的语法错误以验证这一点),任务管理器是否实际说您有96个逻辑处理器(而不是48个,因为有人禁用了超线程)他说了些什么。