Kubuntu 中的哪些部分可能限制可用的 CPU 核心?(Plasma 中仅使用了一半)

Kubuntu 中的哪些部分可能限制可用的 CPU 核心?(Plasma 中仅使用了一半)

我在 12 核/24 线程 AMD Ryzen 5900X 上运行 Kubuntu 22.04.3 LTS。

我遇到的问题是,通过 htop 观察时,KDE/plasma 中运行的许多任务似乎受到 CPU 亲和性的限制,只能在 CPU 上的 24 个线程中运行 12 个。例如,我可以启动一个 konsole 会话,并在一些大文件上运行(基于软件的)视频编码器的多个并行实例。这些应该充分利用 CPU(就像我在 Windows 中双启动时一样),但 Kubuntu 目前没有发生这种情况 - htop 显示一半的核心/线程的使用率非常高,但其他的大多闲置的

假设这是与进程亲和性相关的,我在受影响进程的 PID 上运行了 taskset:

taskset -p 19222
pid 19222's current affinity mask: fc0fc0

fc0fc0 表示核心 6-11 和 18-23(可在 htop 中观察到)

顺着父进程的顺序向上追溯,亲和性掩码“fc0fc0”似乎是从 /usr/bin/plasma_session 继承而来(taskset 将其报告为“fc0fc0”)。plasma_session 的父进程 /usr/bin/startplasma-x11 具有亲和性掩码“ffffff”(所有核心)。但它并不总是 fc0fc0 - 如果是不同的登录会话或我重新启动,有时它是“3f03f”(核心 0-5 和 12-17)。

当我启动控制台会话(通过 Ctrl-Alt-F2)时,相同(软件视频编码)过程会根据需要利用所有核心。

我知道我可以通过 tasket 手动重置进程的亲和性(返回“ffffff”或“0-23”以利用所有核心),然后看到新进程继承掩码并按预期工作:

for i in $(pgrep -u $(whoami)); do
 taskset -ap ffffff $i
done

我的问题是,首先是什么原因导致这种情况发生,我该如何阻止它,而不是使用像上面那样的愚蠢脚本?

经过大量搜索后,我猜测这可能与 cgroups 有关,但我找不到任何显然(对我而言)会导致这种行为的配置文件。

相关内容