gpt4 book ai didi

c# - 处理器关联组 C#

转载 作者:可可西里 更新时间:2023-11-01 14:22:46 26 4
gpt4 key购买 nike

我使用的是具有 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
}
}

关于c# - 处理器关联组 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44854648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com