自从更新到 Ubuntu 18.10 以来,CPU 电源管理似乎出现了问题。我认为(不确定)当笔记本电脑开始有点热时,intel_pstate 会将 CPU 切换到较低的速度。这种情况在过去发生过,但一旦冷却下来,速度就会再次切换为更高。
现在,自从更新以来,它的速度就变得非常慢。例如,从cpufreq-info
:
analyzing CPU 7:
driver: intel_pstate
CPUs which run at the same hardware frequency: 7
CPUs which need to have their frequency coordinated by software: 7
maximum transition latency: 4294.55 ms.
hardware limits: 1.20 GHz - 3.30 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 1.32 GHz and 1.32 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 353 MHz.
所有 8 个 CPU 的速度都在 344 -- 373 MHz 范围内。这些是“Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz”CPU。我现在能找到的最高温度是 78°C,远低于速度通常会回升的温度。
18.04 和 18.10 之间似乎发生了一些变化,导致这种过度的电源管理。有什么想法可以找到正确配置的地方吗?
编辑以添加:
rdmsr -a 0x19a
给出输出
8
8
8
8
8
8
8
8
请注意,这是在重启后发生的,这似乎是恢复正常 CPU 速度的唯一方法。如果再次出现减速,我会看看它是否会改变。
这是一台 HP 笔记本电脑,如果这很重要的话。链接似乎是指戴尔笔记本电脑,从睡眠状态恢复后速度很慢。在我的情况下,没有睡眠/暂停导致速度缓慢。在更新到 18.10 之前也从未发生过这种情况。
更新:速度再次下降,我重新运行了命令rdmsr
。输出与笔记本电脑以正常速度运行时相同:数字 8 重复了 8 次。
如果这种速度变慢的原因不明确,那么是否有至少某种方法可以将速度恢复正常,而无需每次都重新启动?cpufreq-info
显示所有 8 个 CPU 都设置为“省电”。我可以依次将每个 CPU 的调节器设置为“性能” cpufreq-set -c 0 -g performance
,但速度保持锁定在 316 - 357 MHz 范围内。
另一个更新:我不确定这是否与问题有关,但在速度变慢时,thermald 的行为发生了变化。在我的系统日志中,我看到类似以下内容的行:
thermald[1401]: >>thd_cdev_set_state index:1 state:1 :3:0:0:2147483647 force:0
thermald[1401]: cdev index:1 consecutive call, increment exponentially state 11
thermald[1401]: Set : threshold:96000, temperature:96000, cdev:1(Processor), curr_state:10, max_state:10
thermald[1401]: >>thd_cdev_set_state index:1 state:0 :3:0:0:2147483647 force:0
thermald[1401]: match zone 3 trip 0 clamp_valid 0 clamp 2147483647
thermald[1401]: Erased [3: 0 2147483647
thermald[1401]: Set : threshold:96000, temperature:95000, cdev:1(Processor), curr_state:9, max_state:10
在此之前,仅cdev:9(intel_pstate)
被提及。事实上,最后一行似乎表明它已达到最大值,并且 thermald 已切换到cdev:1(Processor)
:
thermald[1401]: >>thd_cdev_set_state index:9 state:1 :3:0:0:2147483647 force:0
thermald[1401]: cdev index:9 consecutive call, increment exponentially state 11
thermald[1401]: Set : threshold:96000, temperature:96000, cdev:9(intel_pstate), curr_state:10, max_state:10
thermald[1401]: >>thd_cdev_set_state index:1 state:1 :3:0:0:2147483647 force:0
thermald[1401]: Added zone 3 trip 0 clamp_valid 0 clamp 2147483647
thermald[1401]: Set : threshold:96000, temperature:97000, cdev:1(Processor), curr_state:1, max_state:10
有没有可能不是 intel_pstate 调节器的问题,而是 thermald 的问题?它切换到了不同的冷却方法,并没有切换回/撤消它使用的任何节流?我该如何手动撤消它来检查?bionic 和 cosmic 之间有什么变化,我可以解决这个问题吗?
再更新一次:罪魁祸首肯定是 thermald。我intel_pstate=disable
在 中添加了 linux 命令行grub
。我不得不在机器上增加更多负载才能使其达到cdev:9(cpufreq)
最大状态 12(而 intel_pstate 为 10),但一旦达到,thermaldcdev:1(Processor)
又切换到。CPU 再次以较慢的速度锁定,但比 pstate 快 3 倍左右。我尝试的所有方法都无法恢复,即使温度早已回落。
目前的解决方法:我删除了该行
<CoolingDevice>Processor</CoolingDevice>
来自/etc/thermald/thermal-cpu-cdev-order.xml
。仍然不知道为什么自更新以来这又成了一个问题。