从 Ubuntu 20.04 升级到 20.10(英特尔 CPU)时 CPU 频率扩展中断

从 Ubuntu 20.04 升级到 20.10(英特尔 CPU)时 CPU 频率扩展中断

从 20.04 升级到 20.10 后,我注意到性能大幅下降,我的笔记本电脑基本上已经无法使用了。经过一番挖掘,发现所有 CPU 都不断扩展到 400 MHz。

在我将调节器更改为性能并在 /etc/init.d/cpufrequtils 中将 min_speed 设置为 1.2 GHz 之后:

...
ENABLE="true"
GOVERNOR="performance"
MAX_SPEED="4900000"
MIN_SPEED="1200000"
...

然后我重启了一下,情况似乎好多了——CPU 的频率在 1.2 GHz 左右徘徊,负载增加时频率也会上升。但是,仍然有一段时间(有时是几秒钟,有时是几分钟)所有 CPU 频率“稳定”在 400 MHz,忽略系统负载。

有趣的是,/sys/devices/system/cpu/cpufreq/policy*/cpuinfo_min_freq 不知何故被重置为 400000,这表明似乎有其他程序正在运行,干扰了正常的 CPU 频率调整。但是,我无法确定是什么。

我尝试通过 installint auto-cpufreq 来摆脱这种“扁平线”,但输出却非常有趣:

-------------------------------------------------------------------------------

Linux distro: Ubuntu 20.10 (Groovy Gorilla)
Linux kernel: 5.8.0-41-generic
Processor: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
Cores: 8
Architecture: x86_64
Driver: intel_pstate

------------------------------ Current CPU states ------------------------------

CPU max frequency: 4700 MHz
CPU min frequency: 1200 MHz

         Usage  Temperature  Frequency
CPU0:    47.5%     55 °C      400 MHz
CPU1:    74.7%     54 °C      400 MHz
CPU2:    43.2%     55 °C      400 MHz
CPU3:    45.3%     53 °C      400 MHz
CPU4:    41.2%     55 °C      400 MHz
CPU5:    42.0%     54 °C      400 MHz
CPU6:    32.6%     55 °C      400 MHz
CPU7:    38.1%     53 °C      400 MHz

---------------------------- CPU frequency scaling ----------------------------

Battery is: charging

Setting to use: "performance" governor

Total CPU usage: 22.4 %
Total system load: 2.51
Average temp. of all cores: 54.25 °C

Load optimal
setting turbo boost: on

-------------------------------------------------------------------------------

...最小 CPU 频率为 1200 MHz,但实际 CPU 频率为 400 MHz?

顺便说一下,温度似乎不是问题,所有核心的温度始终徘徊在 55°C 以下。

所以,我很困惑。有人知道是什么原因造成的吗?有什么办法可以解决吗?这非常令人沮丧,因为有时系统在执行简单的任务时就开始卡住,例如在 Firefox 中从一个选项卡切换到另一个选项卡,而所有 CPU 都处于 400 MHz ......

更新:似乎有些东西干扰了调节器设置。我尝试了以下方法:

date -Ins; for i in 0 1 2 3 4 5 6 7; do echo "performance" > /sys/devices/system/cpu/cpu${i}/cpufreq/scaling_governor; done
date -Ins; cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
sleep 1
date -Ins; cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
sleep 1
date -Ins; cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

输出为:

root@TuxBook:~# bash governortest 
2021-02-03T11:37:37,469836025+01:00
2021-02-03T11:37:37,493420506+01:00
performance
performance
performance
performance
performance
performance
performance
performance
2021-02-03T11:37:38,516823999+01:00
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave

因此,在我将调速器设置为性能后 0-1 秒内,它又回到了省电模式。这不是游戏模式,正如谷歌搜索所建议的那样,我已经清除了游戏模式。

我尝试使用 来查看 /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor auditctl -w /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor -p w -k cpu,但 ausearch 中出现的只是来自上述脚本的调用,之后没有任何内容可以重置它。我不知所措……

答案1

从 20.10 升级到 21.04 时我也观察到了同样的症状。

事实证明,这些问题是 thermald 造成的。

thermald 安装在 kubuntu 20.10 和 21.04 上。但是在 20.10 上 thermald 无法启动。

您可以通过查看以下输出来检查 thermald 是否正在运行

ps aux |grep thermald

当我在 21.04 上停止 thermald 时,限制到 400 MHz 也停止了。

sudo systemctl stop thermald

但是,此时一些设置已经更改,而 thermald 在停止时似乎无法恢复这些设置。所以我干脆完全删除了 thermald。

sudo apt remove thermald

重启后,21.04 的表现几乎与 20.10 相同。基本频率略低(1300 MHz 而不是 1800 MHz),但负载下的峰值和长期频率相同。

与卸载 thermald 相比,停用它应该具有相同的效果:

sudo systemctl disable thermald.service

相关内容