当计算任务不在前台时,Windows 10/11 CPU 性能会降低一半

当计算任务不在前台时,Windows 10/11 CPU 性能会降低一半

使用 I9-12900KS 英特尔 CPU、128GB 内存、华硕 Z690 主板。最初是 Win 10,然后升级到 Win 11,希望能够解决问题。

当我运行繁重的计算任务并将应用程序保持在前台时,一切都很好,性能符合预期,CPU 负载很高,风扇嗡嗡作响。一旦我切换到其他应用程序(等待计算任务时),CPU 使用率就会下降一半,性能也会同样降低。这种情况一直持续到我切换回计算应用程序时,性能才会再次提高。

我尝试调整处理器调度以支持后台进程、更新驱动程序、更新窗口以及在任务管理器中监控进程优先级。

我想从总体上修复这种行为,如果计算任务运行很长时间,可能会涉及数千个生成的进程,手动调整单个进程是不可取的:)

答案1

该问题与 Windows 对效率核心的处理有关——显然它只将非前台任务卸载到 e 核心。可以使用以下命令行工具在每个可执行文件中禁用此功能:

powercfg /powerthrottling disable /path "c:\myprogram\myprogram.exe"

答案2

Windows 中的默认设置是优先执行前台任务而不是后台任务。在运行现代 CPU 的 Windows 11 上,这种情况可能会更加明显,因为 Windows 11 可以在效率或经济性核心之间进行选择。在这种情况下,较低的优先级可能意味着分配较慢的 CPU 核心。

您可能想要修改后台和前台任务的处理方式。

这是在注册表中的键处完成的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl,特别是名为的项目Win32PrioritySeparation

您可以在文章中找到有关此 6 位项目的详细描述 Win32优先级分离。但简而言之,该字段的 6 位被分成三个 2 位字段:112233

字段 11:

价值 意义
00 或 11 较短间隔(Windows 2000 Professional),较长间隔(Windows 2000 Server)
01 更长的间隔
10 间隔更短

字段 22:

价值 意义
00 或 11 可变长度间隔(Windows 2000 Professional),固定长度间隔(Windows 2000 Server)
01 可变长度间隔
10 固定长度间隔

字段 33:

价值 意义
00 相等且固定。前台进程的线程与后台进程的线程以及优先级为空闲的进程的线程获得相同的处理器时间。此外,处理器间隔是固定的。此值覆盖中间两位中可变长度间隔的规范。
01 2:1. 每次为处理器调度前台进程的线程时,它们所占用的处理器时间是后台进程的线程的两倍。
10 或 11 3:1. 每次为处理器调度前台进程的线程时,它们所占用的处理器时间是后台进程的线程的三倍。

在另一个 Win32优先级分离 帖子中,用户编译了所有可能由这三个字段组合而成的十六进制值:

2A Hex = Short, Fixed , High foreground boost.
29 Hex = Short, Fixed , Medium foreground boost.
28 Hex = Short, Fixed , No foreground boost.

26 Hex = Short, Variable , High foreground boost.
25 Hex = Short, Variable , Medium foreground boost.
24 Hex = Short, Variable , No foreground boost.

1A Hex = Long, Fixed, High foreground boost.
19 Hex = Long, Fixed, Medium foreground boost.
18 Hex = Long, Fixed, No foreground boost.

16 Hex = Long, Variable, High foreground boost.
15 Hex = Long, Variable, Medium foreground boost.
14 Hex = Long, Variable, No foreground boost.

您可能会更喜欢18十六进制,这意味着长间隔、固定大小(对前景没有优势)、没有前景提升。

更改此注册表项后,我建议重新启动。记下旧值,以防您想撤消更改。

答案3

您可以进入任务管理器 -> 详细信息页面,然后右键单击您的进程。使用“设置优先级”,您可以将其设置为实时,这应该可以解决性能下降的问题。但是,您每次启动程序时都必须这样做。

相关内容