笔记本电脑如何开启 CPU 步进式变频
本帖已经陈旧,请看 wiki 中的说明。由于我本人没有笔记本做测试,所以只能在这里贴出方法供大家参考,请大家积极反馈测试意见。
要实现 CPU 的步进式变频以达到节能和延长电池续航时间的目的,首先您必须拥有一颗支持这种技术的 CPU(似乎是费话);
其次,内核必须编译有相应的驱动模块。我们看看系统里是否有这些驱动模块:
[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
好,speedstep-centrino.ko、speedstep-ich.ko、speedstep-smi.ko 这三个模块就是我们感兴趣的。看看说明书,您的 CPU 是什么家族的? centrino、ich 还是 smi?如果您的系统里没有这些模块,那么您需要自己动手重新编译安装内核,编译这些模块。
再次,需要系统里具备调节 CPU 频率的工具 cpufrequtils 和自动调用这套工具为我们服务的后台程序 cpufreqd。在 magiclinux 2.0rc2 当中包含这些么?查查看:
[root@MagicLinux ~]# rpm -qa | grep cpufreq
cpufrequtils-0.4-1mgc
cpufrequtils-devel-0.4-1mgc
cpufreqd-2.0.0-1mgc
那么具备这些条件了, cpufreqd 又是如何工作的呢?原来,它首先读取下列两个配置文件的设置,然后调用 cpufrequtils 这套工具,通过特定 CPU 的内核驱动模块来根据系统的负载情况动态调节 CPU 频率:
(1)
/etc/sysconfig/cpufreqd
看看它是什么内容:
[root@MagicLinux ~]# cat /etc/sysconfig/cpufreqd
#SPEEDSTEP_MODULE="speedstep-centrino"
#SPEEDSTEP_MODULE="speedstep-ich"
#SPEEDSTEP_MODULE="speedstep-smi"
原来是指定您的 CPU 步进式变频需要加载的驱动模块。如果您的 CPU 是“迅驰”家族的一员,那就用文本编辑器(例如 kwrite)把 #SPEEDSTEP_MODULE="speedstep-centrino" 这一行前面的井号“#”去掉,然后保存一下,其他情况依此类推。
(2)
/etc/cpufreqd.conf
看看它是什么内容:
[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]
原来这是指导 cpufreqd 如何调节 CPU 频率的策略定义。一般情况下,这个默认设置足够了。我们可以不用理睬它。
好了,一切设置完成,我们试试系统能不能支持 CPU 的步进式变频。
(1)首先看看系统里有没有相关的服务:
[root@MagicLinux ~]# ls -1 /etc/rc.d/init.d/
acpid
arpwatch
cpufreqd
crond
cups
functions
gpm
...
以下略去,可以看到 cpufreqd,就是它。注意:ls 命令使用的选项是 -1 (数字 1)。
(2)尝试启动 cpufreqd 服务:
[root@MagicLinux ~]# service cpufreqd start
Starting CPU frequency scaling deamon (cpufreqd): [OK]
如果此时已经开启了 cpufreqd 服务,您可以停止它,然后重新启动:
[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]
也可以直接“重启”这个服务:
[root@MagicLinux ~]# service cpufreqd restart
Shutting down CPU frequency scaling deamon (cpufreqd): [OK]
Starting CPU frequency scaling deamon (cpufreqd): [OK]
然后关闭全部多媒体程序,稍等一会,听听风扇速度是不是下降了?如果感受到了变化,那么恭喜您!您现在可以把 cpufreqd 服务加入系统默认启动的服务列表里了:
[root@MagicLinux ~]# /sbin/chkconfig --add cpufreqd
注意:上面命令中 /sbin/chkconfig 不等同于 chkconfig,也就是说您必须使用完整的绝对路径。看看服务列表里有什么:
...
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:关闭
...
以下略去。
可以看到,cpufreqd 服务在 2、3、4、5 运行级已经默认开启了,以后不用操心了,系统启动时就会自动启动这个服务。
总结:上面讲得很复杂,其实不过就这么几步:
修改设置 /etc/sysconfig/cpufreqd ----> 开启或重启 cpufreqd 服务 ----> 添加 cpufreqd 服务到系统默认启动的服务列表。
注意:从 MagicLinux 2.0 RC3 开始,以上设置就不再需要了,所有相关模块均已编译进内核,系统将依据当前负载自动调节 CPU 时钟频率。
服务起动正常了,但CPU始终是在以最大速度运行。
似乎speedstep并没有起作用。 俺是笔记本 但俺滴cpu不是不迅驰滴 :? 我在开启cpufreqd服务那一步出现错误提示
# service cpufreqd start
FATAL: Error inserting speedstep_centrino (/lib/modules/2.6.15-rc5-git7/kernel/a rch/i386/kernel/cpu/cpufreq/speedstep-centrino.ko): No such device
Starting CPU frequency scaling deamon (cpufreqd):
但是我也感觉到风扇速度慢了,不过好想噪声还是比win下稍大一点,但我已经很满意了。不知道那个Error是咋回事呵呵。我的是迅驰的本。 笔记本不是迅驰的可以加p4-clockmod.ko模块
另外 如果模块加载正确,可以在/sys/devices/system/cpu/cpu0/cpufreq/目录中看到类似的东东(目录中的内容会略有不同):
[root@localhost cpufreq]# ls -l
total 0
-r--r--r--1 root root 4096 Jan6 13:25 affected_cpus
-r--------1 root root 4096 Jan6 13:25 cpuinfo_cur_freq
-r--r--r--1 root root 4096 Jan6 13:25 cpuinfo_max_freq
-r--r--r--1 root root 4096 Jan6 13:25 cpuinfo_min_freq
-r--r--r--1 root root 4096 Jan6 13:25 scaling_available_frequencies
-r--r--r--1 root root 4096 Jan6 13:25 scaling_available_governors
-r--r--r--1 root root 4096 Jan6 13:25 scaling_cur_freq
-r--r--r--1 root root 4096 Jan6 13:25 scaling_driver
-rw-r--r--1 root root 4096 Jan6 13:25 scaling_governor
-rw-r--r--1 root root 4096 Jan6 13:25 scaling_max_freq
-rw-r--r--1 root root 4096 Jan6 13:25 scaling_min_freq
drwxr-xr-x2 root root 0 Jan6 13:25 stats
cat scaling_available_governors可以看到可用的CPU频率策略,根据加载相应模块的不同,会略有区别
[root@localhost cpufreq]# cat scaling_available_governors
ondemand powersave performance
我的本上的SuSE
pangdae@Infinity:/sys/devices/system/cpu/cpu0/cpufreq> cat scaling_available_governors
ondemand powersave userspace performance
echo performance > scaling_governor可以运行性能策略,CPU会以最大频率跑
有兴趣的可以cat目录中的其他文件,会有其他收获 是不是迅驰的芯片可以使用? The following processors for the x86 architecture are supported by cpufreq:
AMD Elan - SC400, SC410
AMD mobile K6-2+
AMD mobile K6-3+
AMD mobile Duron
AMD mobile Athlon
AMD Opteron
AMD Athlon 64
Cyrix Media GXm
Intel mobile PIII and Intel mobile PIII-M on certain chipsets
Intel Pentium 4, Intel Xeon
Intel Pentium M (Centrino)
National Semiconductors Geode GX
Transmeta Crusoe
Transmeta Efficeon
VIA Cyrix 3 / C3
various processors on some ACPI 2.0-compatible systems [*]
[*] Only if "ACPI Processor Performance States" are available
to the ACPI<->BIOS interface. 已经设置搞定。是迅驰的本本。
好像声音小了点 echo powersave > scaling_governor
风扇过一会就会关掉了 我的是 Celeron-M 1.4G, 我在 Ubuntu 下用 powernowd, 加载的是 p4-clockmod.
是看到频率有变化, 但是好象风扇还是转得利害.
我的本本是 Benq A32E-107 可以用了,笔记本是联想E280L CPU是PM 1.7G,平时降到1.2G 从 Magic Linux 2.0 RC3 开始,以上设置就不再需要了。
页:
[1]