gpt4 book ai didi

c# - 为什么我的 .Net 应用程序只使用单个 NUMA 节点?

转载 作者:可可西里 更新时间:2023-11-01 08:23:52 26 4
gpt4 key购买 nike

我的服务器有 2 个 NUMA 节点,每个节点有 16 个 CPU。我可以在任务管理器中看到所有 32 个 CPU,前 2 行中的前 16 个(NUMA 节点 1)和最后 2 行中的下 16 个(NUMA 节点 2)。

在我的应用程序中,我使用 Thread.Start() 启动了 64 个线程。当我运行应用程序时,它是 CPU 密集型的,只有前 16 个 CPU 忙,其他 16 个 CPU 空闲。

为什么?我经常使用 Interlocked.Increment()。这可能是一个原因吗?有什么方法可以在特定 NUMA 节点上启动线程吗?

最佳答案

除了gcserver,我们还应该启用GCCpuGroupThread_UseAllCpuGroups所以配置应该更像:

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

GcCpuGroup 为多个 CPU 组启用垃圾收集,Thread_UseAllCpuGroups 为运行时管理跨所有 CPU 组的线程分配。

关于c# - 为什么我的 .Net 应用程序只使用单个 NUMA 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26830237/

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