QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2921|回复: 11

笔记本电脑如何开启 CPU 步进式变频

[复制链接]
发表于 2005-12-23 22:32:23 | 显示全部楼层 |阅读模式
本帖已经陈旧,请看 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 时钟频率。
发表于 2005-12-24 12:17:15 | 显示全部楼层
服务起动正常了,但CPU始终是在以最大速度运行。
似乎speedstep并没有起作用。
回复

使用道具 举报

发表于 2005-12-24 15:14:07 | 显示全部楼层
俺是笔记本 但俺滴cpu不是不迅驰滴
回复

使用道具 举报

发表于 2005-12-27 17:52:52 | 显示全部楼层
我在开启cpufreqd服务那一步出现错误提示
[root@MagicLinux Jeff]# 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):          [  OK  ]

但是我也感觉到风扇速度慢了,不过好想噪声还是比win下稍大一点,但我已经很满意了。不知道那个Error是咋回事呵呵。我的是迅驰的本。
回复

使用道具 举报

发表于 2006-1-6 13:33:38 | 显示全部楼层
笔记本不是迅驰的可以加p4-clockmod.ko模块
另外 如果模块加载正确,可以在/sys/devices/system/cpu/cpu0/cpufreq/目录中看到类似的东东(目录中的内容会略有不同):
[code:1]
[root@localhost cpufreq]# ls -l
total 0
-r--r--r--  1 root root 4096 Jan  6 13:25 affected_cpus
-r--------  1 root root 4096 Jan  6 13:25 cpuinfo_cur_freq
-r--r--r--  1 root root 4096 Jan  6 13:25 cpuinfo_max_freq
-r--r--r--  1 root root 4096 Jan  6 13:25 cpuinfo_min_freq
-r--r--r--  1 root root 4096 Jan  6 13:25 scaling_available_frequencies
-r--r--r--  1 root root 4096 Jan  6 13:25 scaling_available_governors
-r--r--r--  1 root root 4096 Jan  6 13:25 scaling_cur_freq
-r--r--r--  1 root root 4096 Jan  6 13:25 scaling_driver
-rw-r--r--  1 root root 4096 Jan  6 13:25 scaling_governor
-rw-r--r--  1 root root 4096 Jan  6 13:25 scaling_max_freq
-rw-r--r--  1 root root 4096 Jan  6 13:25 scaling_min_freq
drwxr-xr-x  2 root root    0 Jan  6 13:25 stats
[/code:1]

cat scaling_available_governors可以看到可用的CPU频率策略,根据加载相应模块的不同,会略有区别
[code:1]
[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
[/code:1]
echo performance > scaling_governor可以运行性能策略,CPU会以最大频率跑

有兴趣的可以cat目录中的其他文件,会有其他收获
回复

使用道具 举报

发表于 2006-1-6 13:45:58 | 显示全部楼层
是不是迅驰的芯片可以使用?
回复

使用道具 举报

发表于 2006-1-6 14:32:12 | 显示全部楼层
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.
  • 回复

    使用道具 举报

    发表于 2006-1-6 16:45:10 | 显示全部楼层
    已经设置搞定。是迅驰的本本。
    好像声音小了点
    回复

    使用道具 举报

    发表于 2006-1-6 18:49:44 | 显示全部楼层
    echo powersave > scaling_governor
    风扇过一会就会关掉了
    回复

    使用道具 举报

    发表于 2006-1-6 21:43:11 | 显示全部楼层
    我的是 Celeron-M 1.4G, 我在 Ubuntu 下用 powernowd, 加载的是 p4-clockmod.
    是看到频率有变化, 但是好象风扇还是转得利害.

    我的本本是 Benq A32E-107
    回复

    使用道具 举报

    发表于 2006-1-9 22:24:44 | 显示全部楼层
    可以用了,笔记本是联想E280L CPU是PM 1.7G,平时降到1.2G
    回复

    使用道具 举报

     楼主| 发表于 2006-1-23 01:43:18 | 显示全部楼层
    从 Magic Linux 2.0 RC3 开始,以上设置就不再需要了。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    GMT+8, 2024-11-25 10:39 , Processed in 0.079308 second(s), 15 queries .

    © 2021 Powered by Discuz! X3.5.

    快速回复 返回顶部 返回列表