尝试在 .Net Core 应用程序中使用 Thread_UseAllCpuGroups

4

我正在尝试在我的.Net Core应用程序中使用Thread_UseAllCpuGroups。在Web.Config中的设置下,使用Framework时我可以无问题地使用我的3990x处理器上的所有128个CPU,但是在将其移植到.Net Core时,它只使用了64个核心(1组)。

我的项目文件部分有以下几行:

    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <UseWPF>true</UseWPF>
    <TieredCompilation>true</TieredCompilation>
    <TieredCompilationQuickJit>false</TieredCompilationQuickJit>
    <TieredCompilationQuickJitForLoops>false</TieredCompilationQuickJitForLoops>
    <gcServer>true</gcServer>
    <gcAllowVeryLargeObjects>true</gcAllowVeryLargeObjects>
    <GCHeapAffinitizeRanges>0:1-64,1:1-64</GCHeapAffinitizeRanges>
    <Thread_UseAllCpuGroups>true</Thread_UseAllCpuGroups>
    <GCCpuGroup>true</GCCpuGroup>
    <ServerGarbageCollection>true</ServerGarbageCollection>
  </PropertyGroup>

我看到了一些设置环境变量的帖子,但我并不需要在所有项目中使用这个功能,只需要针对特定的项目。查找 .Net Core 和处理器组方面的信息相对较少,而关于使用框架的详细信息(这很完美)却有很多。

我理解的是,这些类型选项从 web.config 的运行时部分移到了项目文件中,但我可能做错了什么。

如果您能提供任何想法来指导我何处出错,我将不胜感激。

1个回答

0

.NET 5+和.NET Core版本的运行时配置设置已经移动到runtimeconfig.json或环境变量中,详见Microsoft文档

我发现唯一的方法是设置环境变量:

set complus_GCCpuGroup=1
set COMPlus_Thread_UseAllCpuGroups=1

只有在进程开始之前设置变量的值才能使其正常工作。

dotnet/runtime GitHub页面上还有一个问题已经被提出


你有一个运行的示例展示它是否有效吗?在我的机器上,我使用128个核心时遇到了麻烦。 - msedi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接