|
本帖已经陈旧,请看 wiki 中的说明。
由于我本人没有笔记本做测试,所以只能在这里贴出方法供大家参考,请大家积极反馈测试意见。
要实现 CPU 的步进式变频以达到节能和延长电池续航时间的目的,首先您必须拥有一颗支持这种技术的 CPU(似乎是费话);
其次,内核必须编译有相应的驱动模块。我们看看系统里是否有这些驱动模块:
[code:1]
[root@MagicLinux ~]# ls /lib/modules/2.6.15-rc5-git7/kernel/arch/i386/kernel/cpu/cpufreq
acpi-cpufreq.ko
cpufreq-nforce2.ko
gx-suspmod.ko
longhaul.ko
longrun.ko
p4-clockmod.ko
powernow-k6.ko
powernow-k7.ko
powernow-k8.ko
speedstep-centrino.ko
speedstep-ich.ko
speedstep-lib.ko
speedstep-smi.ko
[/code:1]
好,speedstep-centrino.ko、speedstep-ich.ko、speedstep-smi.ko 这三个模块就是我们感兴趣的。看看说明书,您的 CPU 是什么家族的? centrino、ich 还是 smi?如果您的系统里没有这些模块,那么您需要自己动手重新编译安装内核,编译这些模块。
再次,需要系统里具备调节 CPU 频率的工具 cpufrequtils 和自动调用这套工具为我们服务的后台程序 cpufreqd。在 magiclinux 2.0rc2 当中包含这些么?查查看:
[code:1]
[root@MagicLinux ~]# rpm -qa | grep cpufreq
cpufrequtils-0.4-1mgc
cpufrequtils-devel-0.4-1mgc
cpufreqd-2.0.0-1mgc
[/code:1]
那么具备这些条件了, cpufreqd 又是如何工作的呢?原来,它首先读取下列两个配置文件的设置,然后调用 cpufrequtils 这套工具,通过特定 CPU 的内核驱动模块来根据系统的负载情况动态调节 CPU 频率:
(1)
/etc/sysconfig/cpufreqd
看看它是什么内容:
[code:1]
[root@MagicLinux ~]# cat /etc/sysconfig/cpufreqd
#SPEEDSTEP_MODULE="speedstep-centrino"
#SPEEDSTEP_MODULE="speedstep-ich"
#SPEEDSTEP_MODULE="speedstep-smi"
[/code:1]
原来是指定您的 CPU 步进式变频需要加载的驱动模块。如果您的 CPU 是“迅驰”家族的一员,那就用文本编辑器(例如 kwrite)把 #SPEEDSTEP_MODULE="speedstep-centrino" 这一行前面的井号“#”去掉,然后保存一下,其他情况依此类推。
(2)
/etc/cpufreqd.conf
看看它是什么内容:
[code:1]
[root@MagicLinux ~]# cat /etc/cpufreqd.conf
# this is a comment
# see CPUFREQD.CONF(5) manpage for a complete reference
[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
# enable_plugins= programs,acpi_ac,cpu,acpi_battery,acpi_temperature,nforce2,sensors,nvclock,apm,pmu
verbosity=4
# enable_remote=1
# remote_group=root
[/General]
#[nforce2_atxp1]
#vcore_path=/some/path
#vcore_default=1500
#[/nforce2_atxp1]
#[sensors_plugin]
#sensors_conf=/some/file
#[/sensors_plugin]
[Profile]
name=On Demand High
minfreq=40%
maxfreq=100%
policy=ondemand
[/Profile]
[Profile]
name=On Demand Low
minfreq=20%
maxfreq=80%
policy=ondemand
[/Profile]
[Profile]
name=Performance High
minfreq=100%
maxfreq=100%
policy=performance
[/Profile]
[Profile]
name=Performance Low
minfreq=80%
maxfreq=80%
policy=performance
[/Profile]
[Profile]
name=Powersave High
minfreq=70%
maxfreq=70%
policy=powersave
[/Profile]
[Profile]
name=Powersave Low
minfreq=30%
maxfreq=30%
policy=powersave
[/Profile]
#[Profile]
#name=Conservative High
#minfreq=33%
#maxfreq=100%
#policy=conservative
#[/Profile]
#
#[Profile]
#name=Conservative Low
#minfreq=0%
#maxfreq=66%
#policy=conservative
#[/Profile]
##
# Basic states
##
# when AC use performance mode
[Rule]
name=AC Rule
ac=on # (on/off)
profile=Performance High
[/Rule]
# conservative mode when not AC
[Rule]
name=AC Off - Low Battery
ac=off # (on/off)
battery_interval=0-30
profile=Powersave Low
[/Rule]
# conservative mode when not AC
[Rule]
name=AC Off - Medium Battery
ac=off # (on/off)
battery_interval=30-70
profile=On Demand Low
[/Rule]
# stay in performance mode for the first minutes
[Rule]
name=AC Off - High Power
ac=off # (on/off)
battery_interval=70-100
profile=On Demand High
[/Rule]
##
# Special Rules
##
# CPU Too hot!
[Rule]
name=CPU Too Hot
acpi_temperature=55-100
cpu_interval=50-100
profile=Performance Low
[/Rule]
# use performance mode if I'm watching a movie
# I don't care for batteries!
# But don't heat too much.
[Rule]
name=Movie Watcher
programs=xine,mplayer,gmplayer,kaffeine,amarok,tvtime
battery_interval=0-100
acpi_temperature=0-60
cpu_interval=0-100
profile=Performance High
[/Rule]
[/code:1]
原来这是指导 cpufreqd 如何调节 CPU 频率的策略定义。一般情况下,这个默认设置足够了。我们可以不用理睬它。
好了,一切设置完成,我们试试系统能不能支持 CPU 的步进式变频。
(1)首先看看系统里有没有相关的服务:
[code:1]
[root@MagicLinux ~]# ls -1 /etc/rc.d/init.d/
acpid
arpwatch
cpufreqd
crond
cups
functions
gpm
...
以下略去,可以看到 cpufreqd,就是它。注意:ls 命令使用的选项是 -1 (数字 1)。
[/code:1]
(2)尝试启动 cpufreqd 服务:
[code:1]
[root@MagicLinux ~]# service cpufreqd start
Starting CPU frequency scaling deamon (cpufreqd): [ OK ]
[/code:1]
如果此时已经开启了 cpufreqd 服务,您可以停止它,然后重新启动:
[code:1]
[root@MagicLinux ~]# service cpufreqd stop
Shutting down CPU frequency scaling deamon (cpufreqd): [ OK ]
[root@MagicLinux ~]# service cpufreqd start
Starting CPU frequency scaling deamon (cpufreqd): [ OK ]
[/code:1]
也可以直接“重启”这个服务:
[code:1]
[root@MagicLinux ~]# service cpufreqd restart
Shutting down CPU frequency scaling deamon (cpufreqd): [ OK ]
Starting CPU frequency scaling deamon (cpufreqd): [ OK ]
[/code:1]
然后关闭全部多媒体程序,稍等一会,听听风扇速度是不是下降了?如果感受到了变化,那么恭喜您!您现在可以把 cpufreqd 服务加入系统默认启动的服务列表里了:
[code:1]
[root@MagicLinux ~]# /sbin/chkconfig --add cpufreqd
[/code:1]
注意:上面命令中 /sbin/chkconfig 不等同于 chkconfig,也就是说您必须使用完整的绝对路径。看看服务列表里有什么:
[code:1]
...
netplugd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
cpufreqd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
xinetd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
arpwatch 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
...
以下略去。
[/code:1]
可以看到,cpufreqd 服务在 2、3、4、5 运行级已经默认开启了,以后不用操心了,系统启动时就会自动启动这个服务。
总结:上面讲得很复杂,其实不过就这么几步:
修改设置 /etc/sysconfig/cpufreqd ----> 开启或重启 cpufreqd 服务 ----> 添加 cpufreqd 服务到系统默认启动的服务列表。
注意:从 Magic Linux 2.0 RC3 开始,以上设置就不再需要了,所有相关模块均已编译进内核,系统将依据当前负载自动调节 CPU 时钟频率。
|
|