Blog on 27th Floor
主页 随便 电脑 电影 社会 阅读 下载 本站 存档
主页 随便 电脑 电影 社会 阅读 下载 本站 存档

Linux上CPU调速

06/08/08。  cathayan.org版权所有,保留一切权利。转载请保留此说明。谢绝商业转载。


现在CPU尤其是笔记本用的多数有随时调节运行频率的功能,这样可以在不需要太多计算能力时降低频率运行,省电,减少发热。在Windows平台,微软已经把这件事搞好了,似乎不需要用户干预;但在Linux上还是要自己搞一搞的,也许有些发行版已经设好了。

我这个本是Debian sid,使用cpufreqd来调节,工作得还不错,2GHz的CPU,经常是以800MHz在运行,但上次编译Google gadgets时却发现它不会自动提升速度,编译很需要CPU的也不提。cpufreqd有个设置文件,/etc/cpufreqd.conf,里面设置很明了,大体就是设定几种规则,然后给定条件运行某个规则,比如接外接电源时就用Performance规则等等。但这次我怎么改这个设置,重启数次也没有反应。

后来检查到/etc/init.d下的cpufreqd脚本,才发现另外有一个cpufrequtils脚本,这个脚本也是自动运行,并且里面直接写了运行哪种方案,也就难怪cpufreqd不能自动调节了。

查了一下,这个cpufrequtils是个单独的包,可能是当初装cpufreqd时就随手装了。又Google了一下,发现它的主页,原来是个简化cpufreqd管理的工具。它自己把想用的规则直接写在脚本里,倒也简单省事,所以决定还是用它。里面主要这四行有用:

ENABLE="true"
GOVERNOR="ondemand"
MAX_SPEED="2000000"
MIN_SPEED="1067000"

意思很明确。重要的就是个governor,也就是管理CPU频率的方案,这个也是核心的不同模块,如下:

acpi-cpufreq
cpufreq_ondemand
cpufreq_userspace
cpufreq_conservative
cpufreq_powersave

这几个模块可以写在/etc/modules里面,然后系统现有哪些governor可用,可以用以下命令列出:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

意思也很明白。Ondemand就是按需分配。

问题在于如果只设了这个ondemand,没有设定最大最小速度,它的工作也不行,可能会一直停留在最低频率上,按道理这个事不应该发生,但我机器上确实如此。所以还必须设定最大最小频率。CPU可用的频率可用如下命令列出:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

比如这台的结果是:2000000 1600000 1333000 1067000 800000 。MHz为单位。把这个数字写到上面的脚本中即可。然后运行:

/etc/init.d/cpufrequtils restart

对CPU速度进行重新设定,工作就正常了。

另一个命令是cpufreq-info,可以列出当前CPU的全面信息,也可以使用。

用这个脚本,另外的cpufreqd.conf就没有用了,倒也省事。想用什么频率,就直接改这个脚本,算是个半自动步枪,比全自动化还可靠些。

06/08/08 14:00:54,由cathayan发表。目录:电脑

7条评论

我这里还是不行啊,我在cpufrequtils中设定了
ENABLE="true"
GOVERNOR="conservative"
MAX_SPEED="1667000"
MIN_SPEED="1000000"
但系统重启后默认仍然是“ondemand”,在这个参数下,CPU频率只运行于1667000,这是怎么回事???请帮忙看看,多谢了。

rgaobj 于 06/08/08 22:55:28 发表. 

检查几个模块是否都在
可用的Governor/frequency是否正确
/sys/devices/system/cpu/cpu0/cpufreq这个目录下的信息
cpufreq-info的信息
cpufrequtils这个脚本运行没有?自己运行一下?又或者这个脚本是否在cpufreqd之后运行?于是被cpufreqd给盖了?
其他的俄也不知道了

http://blog.cathayan.org/member/1 cathayan 于 06/09/08 09:13:36 发表. 

ubuntu里早就缺省配置好这个功能了。

Shiqi 于 06/09/08 11:40:43 发表. 

编译 GGL 的时候确实发现过不自动提速的情况,但我怀疑并非 governor 有问题,而可能是 GGL 的那部分编译确实不是 cpu 密集(内存密集?谁知道)操作,因为并非所有编译都这样,编译其他很多东西的时候都会自动提速。

cpufreqd 和 cpufrequtils 是两个具备同样功能的互不依赖的包,单独用哪个都行,混着用没试过。我用的就完全是前者(因为能配置的东西更多一些),留着后一个 的话估计八成是因为舍不得 cpufreq-info 这个命令。

p.s. 单独用 cpufrequtils 同样也是要配置最高和最低频率的,不知道 debain 上的配置文件在哪儿(忘了 apt-get 怎么查某个包的所有文件了),我的发行版是在 /etc/conf.d/cpufreq,内容类似这样

#configuration for cpufreq control

# valid governors:
# ondemand, performance, powersave,
# conservative, userspace
governor="ondemand"

# valid suffixes: Hz, kHz (default), MHz, GHz, THz
min_freq="800MHz"
max_freq="2GHz"

http://lymanrb.spaces.live.com lyman 于 06/10/08 15:13:07 发表. 

2.6.24 或者以后的内核都不需要 cpufreqd之类的工具了

只需要保证安装使用:acpi-cpufreq cpufreq_conservative
这两个kernel module就行(用ondemand策略的是cpufreq_ondemand, 其余类推)

然后在rc.local里面加上一行:
echo "conservative" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
(同理,用ondemand策略的,用ondemand替换掉上面的conservative)

// 建议安装powertop看看还有什么其他省电的tweak可以用

http://brucewang.net number5 于 06/10/08 18:43:56 发表. 

我不用ondemand策略而用conservative策略就是因为ondemand策略在笔记本下面忽快忽慢完全不靠谱

http://brucewang.net number5 于 06/10/08 18:49:59 发表. 

我这两天的观察ondemand工作还不错

http://blog.cathayan.org/member/1 cathayan 于 06/10/08 20:06:42 发表. 


这篇文章已经关闭,不能添加评论和投票
I am watching and will delete all spam.

我的E-Mail


Copy&Paste Exchange

访问CPeX Group

订阅Feed

订阅Feedburner
Feedsky订阅
本站订阅

请登录

导航

cathayan.org Web

最新贴

RIME 小狼毫/鼠须管的极点及五笔拼音配置
Software that rocks or sucks less
一棵热带的树换新叶的过程
几个有用的Vim招术
论语七 述而
Nomacs 图像浏览器
Windows 文件校验
Windows 10 文件批量命名简单方法
Windows 10 文件删除高级操作
本站也算是有响应式设计了

最新评论

Powered by

Powered by Nucleus CMS

版权声明

Creative Commons License
Blog on 27th floor by Cathayan is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
Powered by Nucleus CMS v3.71. Best view with Mozilla browsers.