注:本文在Ubuntu 8.04下示范。
1.启用与CPU相对应的内核模块
查询相应模块是否已启用:
# ls /sys/devices/system/cpu/cpu0如果你看到一个名为cpufreq的文件夹,则说明频率调节功能已经启用,您可以直接跳至下一步。
如果没有看到,则需要加载相应的内核模块。
# ls /lib/modules/`uname -r`/kernel/arch/*/kernel/cpu/cpufreq你会看到一些模块文件,我的是这样的。
acpi-cpufreq.ko longrun.ko powernow-k8.ko speedstep-smi.ko
cpufreq-nforce2.ko p4-clockmod.ko speedstep-centrino.ko
gx-suspmod.ko powernow-k6.ko speedstep-ich.ko
longhaul.ko powernow-k7.ko speedstep-lib.ko不同的模块对应于不同类型的CPU,如下表所示。
p4-clockmod.ko Intel P4的处理器 speedstep-centrino.ko 迅弛 powernow-k*.ko AMD处理器用的 cpufreq-nforce2.ko nforce2芯片组用的
找到对应的内核模块后,用modprobe加载它。例如我的是nforce2。
# modprobe cpufreq-nforce2注:模块名是不包含.ko的部分。
如果没有出错信息,那么模块应该就加载成功了。
再按照上面的方法查询一下
# ls /sys/devices/system/cpu/cpu0应该能看到一个名为cpufreq的文件夹。
2.选择适当的调节器
调节器(Governer)是用来调节CPU频率的,让我们先看一下有那些调节器可用。
内核模块 调节器名称 功能 cpufreq_ondemand ondemand 按需调节,内核提供的功能,实现了动态频率调节 cpufreq_powersave powersave 省电模式,通常以最低频率运行, cpufreq_userspace userspace 用户模式,一些调频工具软件需要在此模式下才能运行 cpufreq_conservative conservative “保守”模式,类似于ondemand,但调整相对较缓 无 performance 不降频
查看当前的调节器:
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor更改使用的调节器,需要加载相应的内核模块,再更改scaling_governor文件,例如:
# modprobe cpufreq_ondemandUbuntu下需要先取得root权限。# sudo su提示输入密码,再执行:# echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
3.开机自动加载以上设置
1. 编辑 /etc/modules ,加入刚才modprobe挂载的内核模块
cpufreq-userspacecpufreq-ondemand
cpufreq-powersave
cpufreq-conservative
cpufreq-nforce2 #请修改为相应的频率调节模块
2. 安装sysfsutils,
# sudo aptitude install sysfsutils以超级用户权限编辑/etc/sysfs.conf
# sudo gedit /etc/sysfs.conf
加入以下几行:
devices/system/cpu/cpu0/cpufreq/scaling_governor = ondemanddevices/system/cpu/cpu0/cpufreq/scaling_max_freq = 2000000 #请修改为您的CPU的最高频率
devices/system/cpu/cpu0/cpufreq/scaling_min_freq = 1600000 #请修改为您的CPU的最低频率
如果是双核CPU,还应加入cpu1的内容,与cpu0类似。
4.使用powernowd管理CPU频率
除了内核模块的CPU频率管理功能外,我们也可以用软件来管理,可选的软件有:
cpudynd
cpufreqd
cpufrequtils
powernowd
powersaved
speedfreqd本 文以powernowd为例,powernowd是一个很小巧的频率管理软件,其管理方式和ondemand差不多,都是动态调节。具体就是在负载变大时 将频率调节到最大,然后在负载变小后将频率慢慢降低,降低频率时是以正弦函数曲线的方式进行的。powernowd是通过sysfs接口来调节频率的。
安装powernowd:
sudo aptitude install powernowdpowernowd需要使用userspace管理器。在root下执行:
# echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor并且在/etc/sysfs.conf 中把 devices/system/cpu/cpu0/cpufreq/scaling_governor 设置成 userspace:
devices/system/cpu/cpu0/cpufreq/scaling_governor = userspace
devices/system/cpu/cpu0/cpufreq/scaling_max_freq = 2000000 #请修改为您的CPU的最高频率
devices/system/cpu/cpu0/cpufreq/scaling_min_freq = 1600000 #请修改为您的CPU的最低频率启动powernowd:
# sudo /etc/init.d/powernowd start这样CPU频率管理的任务就交给powernowd了。
默 认情况下powernowd在INIT LEVEL 2 3 4 5下是自动启动的。另外你可以在/etc/default/powernowd中设置powernowd的各种选项,powernowd的启动脚本 /etc/init.d/powernowd会加载这些选项。