快捷搜索:   nginx

Linux powernowd为CPU降降温

夏日炎炎,我们的电脑这个发热大户也不堪忍受高温,风扇整天嗡嗡地呻吟。高温不仅使得系统不稳定,使用者也必须忍受着来自电脑的热浪的侵袭。本文就介绍一 下在Linux下如何通过CPU频率调节为电脑降温,让电脑COOL一夏,让笔记本电池用得更长久一些,也希望可以为节能降耗作一份贡献。

注:本文在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,如下表所示。



找到对应的内核模块后,用modprobe加载它。例如我的是nforce2。


# modprobe cpufreq-nforce2

注:模块名是不包含.ko的部分。


如果没有出错信息,那么模块应该就加载成功了。



再按照上面的方法查询一下


# ls /sys/devices/system/cpu/cpu0

应该能看到一个名为cpufreq的文件夹。



2.选择适当的调节器

调节器(Governer)是用来调节CPU频率的,让我们先看一下有那些调节器可用。




查看当前的调节器:


# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

更改使用的调节器,需要加载相应的内核模块,再更改scaling_governor文件,例如:


# modprobe cpufreq_ondemand

Ubuntu下需要先取得root权限。# sudo su

提示输入密码,再执行:# echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
3.开机自动加载以上设置

1. 编辑 /etc/modules ,加入刚才modprobe挂载的内核模块

cpufreq-userspacecpufreq-ondemandcpufreq-powersavecpufreq-conservativecpufreq-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 powernowd

powernowd需要使用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 = userspacedevices/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会加载这些选项。

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论