处理器关联组C#

时间:2017-06-30 20:50:35

标签: c# windows server processor

我使用的是带有72个内核的Windows Server 2016。我看到有两组处理器。我的.net应用程序将使用一个或其他组。我需要能够强制我的应用程序使用我选择的组。 我在下面看到一个代码示例,但我无法使其工作。我可能会传递错误的变量。我希望应用程序选择组1和所有处理器然后组2和所有处理器。

我的问题是如何强制我的.net应用使用第1组或第2组?我不确定以下链接是否有用。

  

https://gist.github.com/alexandrnikitin/babfa4781c68f1664d4a81339fe3a0aa

我确实尝试将此添加到我的配置中,但应用程序仅使用组0,但我确实使用此代码显示所有核心。我知道一个选择是去bios并选择flatten但我不确定这是做正确的事情。

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

1 个答案:

答案 0 :(得分:1)

已发布的示例仅将当前线程设置为CPU处理器组。但是您想为进程的所有线程设置它。您需要为您的流程调用SetProcessAffinityMask。

不需要PInvoke到 SetProcessAffinityMask ,因为 Process 类已经有一个属性 ProcessorAffinity ,可让您直接设置它。

$str = preg_split('/\s+/', $string, -1, PREG_SPLIT_NO_EMPTY);