.NET Core是否有64 vCPU限制



我有一个.NET Core应用程序,它启动512个填充AI网络的任务。我正在执行扩展测试,并在Azure中的2、4、8、16、32和64处理器机器上运行了基准测试。所有的基准测试都使用机器上100%可用的vCPU。

当我尝试在M128(128 vCPU(上运行测试时,测试以50%的CPU利用率运行。我检查了环境变量,environment.ProcessorCount告诉我只有64个处理器(文档中说这是虚拟处理器计数(。进一步挖掘,我发现每个"处理器组"有64个CPU的架构限制。这台机器显然有两个处理器组,每个处理器组有64个。

这是.NET Core中的错误,还是.NET Core仅限于一个处理器组?

根据本文档,您可以在一个进程中在64个以上的逻辑处理器上执行。您需要在app.config:中设置以下内容

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

通过AMD EPYC 7713P验证了在windows上使用.net framework 4.8,该软件总共有128个内核。以前,它只在64个内核上运行;它在添加配置后工作。

接下来,我只需要解决IO瓶颈。。。

Environment.ProcessorCount的文档显示

如果当前计算机包含多个处理器组,则此属性返回可供公共语言运行时(CLR(使用的逻辑处理器数。

我认为您可能需要运行多个进程(以及CLR的多个实例(来利用第二组。

最新更新