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

2024-01-20

我正在尝试在我的 .Net Core 应用程序中使用 Thread_UseAllCpuGroups。将框架与 Web.Config 中的设置结合使用时,我在 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 的运行时部分移至项目文件,但我做错了。

如果有任何关于我出错的地方的想法,我将不胜感激。


.NET 5+ 和 .NET Core 版本的运行时配置设置已移至runtimeconfig.json或环境变量,如中所述微软的文档 https://learn.microsoft.com/en-us/dotnet/core/run-time-config/threading#cpu-groups.

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

set complus_GCCpuGroup=1
set COMPlus_Thread_UseAllCpuGroups=1

仅当您在进程开始之前设置变量的值时,它才有效。

还有dotnet/runtime GitHub 页面上打开的问题 https://github.com/dotnet/runtime/issues/29686.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试在 .Net Core 应用程序中使用 Thread_UseAllCpuGroups 的相关文章

随机推荐