为何我的 CPU 频率卡住了?

为何我的 CPU 频率卡住了?

在最近的例行升级之后,我发现无法手动更改 CPU 频率。系统会自动执行此操作,并选择尽可能高的频率,这会导致 CPU 运行过热(它已经存在发热问题)。

我发现的大多数修复都出现在 2010 年或更早的线程中,并且不再适用。

以下是输出cpufreq-info

cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to [email protected], please.
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 800 MHz - 1.80 GHz
  available frequency steps: 1.80 GHz, 1.80 GHz, 1.20 GHz, 800 MHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 1.80 GHz and 1.80 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 1.80 GHz.
  cpufreq stats: 1.80 GHz:77.10%, 1.80 GHz:0.01%, 1.20 GHz:22.86%, 800 MHz:0.02%  (74)
analyzing CPU 1:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 1
  CPUs which need to have their frequency coordinated by software: 1
  maximum transition latency: 10.0 us.
  hardware limits: 800 MHz - 1.80 GHz
  available frequency steps: 1.80 GHz, 1.80 GHz, 1.20 GHz, 800 MHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 1.80 GHz and 1.80 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 1.80 GHz.
  cpufreq stats: 1.80 GHz:77.09%, 1.80 GHz:0.02%, 1.20 GHz:22.88%, 800 MHz:0.02%  (73)

输出cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

1801000

答案1

原来问题出在cpufreqd,它在我安装 Ubuntu MATE Desktop 时被引入。删除它后,控制权返回到系统,现在我可以使用我的系统,而不会出现不必要的过热。

答案2

似乎 scaling_min_freq 未设置为较低频率,从而阻止调节器访问这些频率。为了尝试查看是否可以操纵此操作,请在终端中输入以下命令:

sudo -i
for x in /sys/devices/system/cpu/cpu[0-1]/cpufreq; do echo 800000 > $x/scaling_min_freq; done
exit

如果这产生了所需的结果,您可以将脚本中的循环放入 /etc/rc.local。如果没有,那么我将重新启动系统以恢复已知的可操作状态。在我的系统上,我还需要添加行echo 1 > /sys/module/processor/parameters/ignore_ppc,我在循环之前执行该行。

相关内容