电池故障导致CPU频率过低

电池故障导致CPU频率过低

我的电池显然已经没电了(我尝试用 重新校准它power-calibrate,但没有成功)。

 $ acpi
Battery 0: Charging, 0%, charging at zero rate - will never fully charge.
Battery 1: Not charging, 0%

结果CPU频率被设置为最低值

 $ grep MHz /proc/cpuinfo 
cpu MHz     : 399.999
cpu MHz     : 400.064
cpu MHz     : 400.001
cpu MHz     : 400.046
 $ sudo cpupower frequency-info 
analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 400 MHz - 2.60 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 400 MHz and 2.60 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 400 MHz (asserted by call to kernel)
  boost state support:
    Supported: no
    Active: no
 

我尝试过手动设置频率但失败

 $ sudo cpupower frequency-set -f 2000
Setting cpu: 0
Error setting new values. Common errors:
- Do you have proper administration rights? (super-user?)
- Is the governor you requested available and modprobed?
- Trying to set an invalid policy?
- Trying to set a specific frequency, but userspace governor is not available,
   for example because of hardware which cannot be set to a specific frequency
   or because the userspace governor isn't loaded?

用 sysfs 提升它也不起作用,

 $ echo "2000000" | sudo tee -a /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq 
2000000
 $ cat /sys/devices/system/cpu/cpu3/cpufreq/scaling_cur_freq 
400000

如何完全禁用 CPU 频率缩放或将其设置为最大值?

该问题出现在 Linux 和 OpenBSD 上

我还可以通过以下方式测量性能下降情况

dd if=/dev/zero bs=1M count=1024 | md5sum -

它给我大约 50MB/s,几乎比预期低 10 倍。

我尝试过使用 90W 和 65W 适配器,频率没有提高。

我尝试过取出电池,但仍然以最低频率运行。

# dmidecode -t processor | grep "Speed"
        Max Speed: 8300 MHz
        Current Speed: 2600 MHz
# lshw -c cpu | egrep "capacity|size"
       size: 400MHz         
       capacity: 4005MHz

答案1

如果在 sysfs 中手动设置值没有效果,这可能是因为频率在 BIOS 级别受到限制。如果您的笔记本电脑是笔记本电脑, 这是当然因为频率受到BIOS级别的限制。

确保您阅读并理解上面链接的页面。这是一项安全功能,BIOS 必须自行检测到限制 CPU 的严重原因。
在这种情况下,由于标准 65W 电源适配器的弱点以及没有可用的电池来提供额外的电源,可能无法响应峰值功率需求。

如果您确定您的适配器足够强大,并且怀疑 BIOS 有问题,或者愿意承担不可预测行为(包括数据丢失)的风险,并且确实希望忽略此限制,您可以:

将值/sys/module/processor/parameters/ignore_ppc从 0 更改为 1

如果您希望此设置在重新启动后仍然有效,则只需将其添加processor.ignore_ppc=1到启动命令行即可。

现在你只能靠自己了,祝你好运!

答案2

情况可能是这样的:

  1. 你正在看到当前的执行命令时的 cpu 频率,而不是最大频率,请参阅。所以你可能不需要做任何其他事情就可以了。
  2. 您选择的值不可用,请参阅/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
  3. 该功能不受内核支持,或者存在错误,请参阅/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed:参数无效

你可以尝试:

  1. 使用cpupower-gui
  2. 没有电池,两种操作系统都是一样的。
  3. 同样,来自其他发行版的 live USB

请发布以下输出,适用于 Linux 和 OpenBSD(某些命令可能不可用):

uname -a
lsb_release -a
lscpu | grep "MHz".
sudo dmidecode -t processor | grep "Speed"
lshw -c cpu | egrep "capacity|size"
sudo lshw -c cpu | egrep "capacity|size"
head /sys/devices/system/cpu/cpu0/cpufreq/scaling_*

另请发布您的电脑的确切型号。

答案3

我刚刚在戴尔笔记本电脑上遇到了同样的问题:

$ lscpu | grep MHz
CPU MHz:                         200.000
CPU max MHz:                     4800.0000
CPU min MHz:                     800.0000

事实证明,只是电源线松动了。重新插入插头解决了问题。

相关内容