我使用的是带有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"/>
答案 0 :(得分:1)
已发布的示例仅将当前线程设置为CPU处理器组。但是您想为进程的所有线程设置它。您需要为您的流程调用SetProcessAffinityMask。
不需要PInvoke到 SetProcessAffinityMask ,因为 Process 类已经有一个属性 ProcessorAffinity ,可让您直接设置它。
$str = preg_split('/\s+/', $string, -1, PREG_SPLIT_NO_EMPTY);