我有一台 Dell Latitude D600,运行 CrunchBang Statler(基于 Debian Squeeze),配备 1.4GHz Pentium M。我注意到在 Conky 中,我的 CPU 频率停留在 600MHz,即使在执行 Flash 视频等 CPU 密集型操作时也是如此。所以我安装了 cpufreqd,运行 cpufreq-info,它返回了:
cpufrequtils 007: 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: 600 MHz - 1.40 GHz
available frequency steps: 1.40 GHz, 1.20 GHz, 1000 MHz, 800 MHz, 600 MHz
available cpufreq governors: powersave, userspace, conservative, ondemand, performance
current policy: frequency should be within 600 MHz and 600 MHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 600 MHz.
cpufreq stats: 1.40 GHz:0.00%, 1.20 GHz:0.00%, 1000 MHz:0.00%, 800 MHz:0.00%, 600 MHz:100.00%
请注意有关“需要协调频率的 CPU”的部分。 CPUFreqD 似乎无法管理我的处理器频率,并且它还表示它保持在 600MHz 到 600MHz 的范围内。我打开了 SpeedStep,据说 2.6 对此有完全支持(我从 Wheezy 向后移植了 2.6.39),但我从未注意到 SpeedStep 做了任何事情。如果我禁用它,BIOS 会说我将卡在 600MHz。
电源没有问题,因为笔记本电脑没有电池;它仅依赖于电源线。如何启用处理器的全频? Linux 在频率上对我撒谎了吗?我对 Linux 有丰富的经验,所以我不害怕尝试复杂的修复。
答案1
一个月后,我运行 Arch Linux,发现了真正的问题及其解决方案。
我的 Dell D600 中没有电池,仅依靠交流适配器供电运行。当 BIOS 检测到没有安装电池时,它会永久降低 CPU 的频率,以避免交流适配器过载。
如果您想覆盖此行为,您所要做的就是添加processor.ignore_ppc=1
到内核引导命令的末尾(通常在 GRUB 配置中找到)。然后您可以使用 acpi_cpufreq 驱动程序来正确启用 CPU 频率缩放。
或者你可以选择不便宜,买一块电池。这样也能解决问题。
答案2
信息“需要通过软件调整频率的CPU:0”完全没问题。这0
意味着要控制的不是多个CPU,而是一个CPU列表- 在你的情况下只有一个,其编号是0
。
你读了吗man cpufreq-set
?它告诉您如何设置min
和max
允许的 CPU 频率。另外,推荐的 cpufreq 调节器是conservative
。只需更改为该设置,您就不需要运行额外的系统守护程序。
答案3
你实际上需要加载适当的电源模块,因为 Debian 通常不会自动加载它们。
检查我家里的 Squeeze 安装,有很多速度步可以加载的模块。我不确定您的特定机器需要哪些。您可以一一尝试。
-rw-r--r-- 1 root root 7500 Oct 3 17:07 speedstep-centrino.ko
-rw-r--r-- 1 root root 7120 Oct 3 17:07 speedstep-ich.ko
-rw-r--r-- 1 root root 6912 Oct 3 17:07 speedstep-lib.ko
-rw-r--r-- 1 root root 8152 Oct 3 17:07 speedstep-smi.ko
使用命令检查它们是否已加载lsmod | grep speedstep
。