tl:dr;
- 搭载英特尔 i7-10510U 的 ThinkPad X1 Carbon Gen 8
- Ubuntu 24.04
- 即使温度较低,也可以大幅降低至 400 MHz
- 目标:能够最大限度地发挥 CPU 的性能,同时保持温度在最高限度(我不在乎它是否死机,反正它已经很旧了)
编辑
在尝试了所有其他方法后,我终于尝试完全禁用intel_pstate
并强制acpi
。我在 BIOS 中启用了 Intel SpeedStep,并将所有功能设置为最大性能(甚至电池也是如此)。
起初这似乎解决了我的问题,但效果并不好。但至少现在问题似乎一直存在,并且可以暂时修复。
因此,当我启动 PC 并开始对 CPU 施加压力时(我就是stress
这么做的),它会正常工作几分钟 - 温度停留在 97c,时钟频率为 2.6 GHz,即使在重负载下,一切都反应灵敏,我可以使用 PC。几分钟后,时钟频率下降1.9 GHz
,温度也开始下降。此时,PC 变得缓慢而迟钝。即使温度现在较低(约 80c),时钟频率仍保持在 1.9 GHz。
然后,如果我将电源模式从“性能”切换到“平衡”,然后再切换回“性能”,时钟频率就会一次又一次地跳到 2.6 GHz,持续几分钟后才会回到 1.9。因此,临时解决办法就是每次我注意到时钟频率下降时就切换模式。
很长的故事
我有一台配备英特尔 i7-10510U 的联想 ThinkPad X1 Carbon Gen 8。当前正在运行新安装的 Ubuntu 24.04 LTS(一周前我清除了磁盘并使用所有默认设置从头开始安装了所有内容)。3 周前,我清理了笔记本电脑(清除了灰尘,更换了导热膏)。
但我无法摆脱困扰我很长时间(我想应该有一年多了)的讨厌的热节流问题。一切都始于一次 Ubuntu 升级之后,不记得具体是哪一次了,从那时起,Ubuntu 经历了各种版本(升级),现在全新安装也一样。
当我启动笔记本电脑、连接到空调并处于性能模式时,一切都运行正常,直到我开始以最大负载折磨 CPU。然后它达到 96-97c 并正常工作一段时间,直到节流开始。问题来了 - 一旦节流开始,系统似乎无法从中恢复,即使温度下降了 20 多摄氏度,CPU 仍然处于节流状态。我可以通过从性能切换到平衡然后再切换回来暂时解决问题 -> 它会工作一段时间(例如,它可以在 96c 下保持大约 5 分钟,然后它会再次启动)。平衡模式似乎没有受到影响,但那里的性能也相当糟糕,所以我想使用性能模式。
有时它会将其节流到例如 2.6 GHz 或 1.6 GHz,这还算可以,但有时它会一路降至 400 MHz,机器无法使用,即使温度为例如 50c。那么为什么温度下降后它不返回高时钟呢?
在此之前,它工作正常。如果我对 CPU 施加很大压力,它的温度会持续数小时保持在 96 摄氏度,但它从未降到无法使用的程度。它只会降到足以使其保持在 100 摄氏度以下(这是绝对最大值),仅此而已。我希望这种行为能恢复。
我已经阅读了几十条帖子,我尝试了所有我能尝试的方法,但都无济于事。所以我尝试了:
- 彻底清理笔记本电脑内部的灰尘 + 更换导热膏(由专业人员完成)
- Ubuntu 24.04 LTS 的完全全新安装(完整磁盘擦除 + 全新安装)
- 我卸载了
thermald
- 我添加
GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=enable quiet splash"
到/etc/default/grub
文件中 - 我试过了
sudo echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
-> 重启后就消失了 - 我试过
sudo echo performance | sudo tee /sys/firmware/acpi/platform_profile
- 我试过
cpufreq-set -r --governor performance
- 我试过
sudo powerprofilesctl set performance
- 我安装
cpupower-gui
后尝试将最小和最大频率都设置为 4 GHz,我甚至尝试将其设置为合理的值(例如最小设置为 2 GHz,最大设置为 4 GHz)-> 重启后该值会丢失,但重启前它什么也不会做 - 我尝试在 BIOS 中调整与电源和 CPU 相关的任何设置;首先,我将所有内容设置为“性能”,然后禁用所有内容,但没有任何帮助
- 我检查了圈数检测模式,
cat /sys/devices/platform/thinkpad_acpi/dytc_lapmode
但它始终为 0 cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
返回intel_pstate
所有 8 个核心
所以基本上我尝试了在互联网上找到的所有方法,浏览了 AskUbuntu 和 Reddit 上的数十个帖子,但都没有成功,现在我完全沮丧了。这是否可能是硬件故障?我应该买一台新笔记本电脑吗?
我目前唯一能想到的就是尝试更新 BIOS/固件。但过去这曾经自动发生,所以我想说现在可能是最新版本。如果我的那台笔记本电脑上没有 Windows(如果需要,我另一台笔记本电脑上有 Windows),我该如何检查并最终升级/降级?
其他事实
- 我使用联想原装 65W 充电器
- 里面的电池功能齐全(健康度 84%,630 次循环,无错误,一次充电后仍可工作几个小时)
- 电池也会出现此问题
- 我越是操作它,它就越糟糕(通常它在重启后工作正常,直到我不开始关闭 CPU,然后它开始以较少的速度节流,直到我不开始更改所有这些配置文件 -> 然后它开始达到 400、600 或 800 MHz,这会导致机器无法使用)
- 重启后,即使我手动将其设置为重启前,也
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
总是返回powersave
performance
tl:dr;
thermald
从一开始就无法正常工作,后来我甚至卸载了它,以为是它导致了这个问题。结果发现它是正常工作所必需的。再次安装并使其工作解决了这个问题。在我看来,该thermald
服务与联想的圈数检测功能之间存在某种冲突,导致无法thermald
正常启动。完整答案
我想我成功修复了它!
thermald
毕竟,这似乎是必需的。因此,我尝试的第一件事就是卸载它,因为我在这里找到了很多答案,它通常是导致问题的原因。但在我尝试了所有剩余选项均未成功后,我决定再次尝试安装这个东西。因此我使用以下命令安装了它:
我成功启动了服务,并检查了状态
并看到以下错误:
快速谷歌搜索让我找到了这个:https://github.com/intel/thermal_daemon/issues/268
因此我编辑了 thermald 的服务文件:
并将其替换
--adaptive
为--ignore-cpuid-check --workaround-enabled
,这样 ExecStart 行看起来如下:之后我重新启动了服务:
当我再次检查状态时
我看到它现在运行正常。它仍然显示一些警告/错误,但最后一行是最重要的 - 它表明守护进程毕竟已启动:
瞧!它完全按照我想要的方式工作,也完全按照它应该的方式工作!我目前
stress
所有核心都以 100% 运行,CPU 温度始终保持在 96-97,时钟频率大部分为 2.6 GHz,偶尔会有变化,目前运行了 15 分钟,没有任何问题。您可以看到它偶尔会降到 2 GHz 以下,但只持续一秒钟,然后又回到 2.6 GHz(可能是为了保持温度不超过 97,因为 TCC 偏移设置为 3),但偶尔也会超过 3 GHz。我尝试重启机器,它继续工作,一切正常。我还尝试切换电源模式,但我无法破坏它,它就是正常工作!
笔记:
我做了很多其他的事情,但都没有以任何方式影响或解决问题,所以我相信这只是缺失/不起作用
thermald
。但万一这对其他人没有帮助,我今天也做了以下事情:intel_pstate
为acpi
Intel SpeedStep and Intel Power Management
并将所有内容设置Max Performance
为但我相信,只要确保
thermald
安装并运行就能解决问题。我从中学到了很多东西!