小编Hob*_*ten的帖子

如何配置我的多线程 .NET 5 应用程序以使用所有 Windows CPU 组?

我正在尝试将项目从 .NET Framework 4.7.2 迁移到 .NET 5,但我的程序的性能显着下降。该程序的部分内容利用并行性在具有 96 个内核和 192 个逻辑处理器(分布在 4 个 CPU 组中)的服务器上进行批量操作。

我在安装了 .NET 5 Runtime(未安装 .NET 5 SDK)的 Windows Server 2016 上运行该程序。该项目是用 F# 5.0 编写的。

在 .NET Framework 4.7.2 中,我们使用以下app.config文件成功地使程序在所有 192 个逻辑处理器上运行,实现了约 98% 的 CPU 利用率:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <runtime>
        <Thread_UseAllCpuGroups enabled="true" />
        <GCCpuGroup enabled="true" />
        <gcServer enabled="true" />
        <gcAllowVeryLargeObjects enabled="true" />
    </runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)

迁移到 .NET 5(以及扩展 .NET Core)后,CPU 利用率下降,并且我无法再次提高它。

根据微软自己的文档, app.config不用于配置.NET Core项目,而是用[appname].runtimeconfig.json. runtimeconfig.template.json为了适应这一变化,我在我的项目中添加了:

{
  "configProperties": {
    "System.GC.CpuGroup": …
Run Code Online (Sandbox Code Playgroud)

f# multithreading cpu-usage .net-core .net-5

6
推荐指数
1
解决办法
847
查看次数

标签 统计

.net-5 ×1

.net-core ×1

cpu-usage ×1

f# ×1

multithreading ×1