[英]processor affinity group C#
我正在使用具有72个核心的Windows Server 2016。 我看到有2组处理器。 我的.net应用将使用一个或其他组。 我需要能够强制我的应用使用我选择的网上论坛。 我在下面看到一个代码示例,但无法使其正常工作。 我可能传递了错误的变量。 我希望应用程序选择组1和所有处理器,然后选择组2和所有处理器。
我的问题是如何强制我的.net应用程序使用组1或组2? 我不确定下面的链接是否会工作。
https://gist.github.com/alexandrnikitin/babfa4781c68f1664d4a81339fe3a0aa
我确实尝试将其添加到我的配置中,但该应用仅使用组0,但我确实显示了此代码的所有内核。 我知道一种选择是去BIOS并选择展平,但是我不确定这是做事情的正确方法。
<Thread_UseAllCpuGroups enabled="true"/>
<GCCpuGroup enabled="true"/>
<gcServer enabled="true"/>
发布的示例仅将当前线程设置为CPU处理器组。 但是您想为进程的所有线程设置它。 您需要为您的流程调用SetProcessAffinityMask。
不需要PInvoke到SetProcessAffinityMask,因为Process类已经具有属性ProcessorAffinity ,可以直接设置它。
class Program
{
static void SetProcessAffinity(ulong groupMask)
{
Process.GetCurrentProcess().ProcessorAffinity = new IntPtr((long)groupMask);
}
static void Main(string[] args)
{
SetProcessAffinity(1); // group 0
// binary literals are a C# 7 feature for which you need VS 2017 or later.
SetProcessAffinity(0b11); // Both groups 0 and 1
SetProcessAffinity(0b1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111); // for all cpu groups all 64 bits enabled
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.