关闭

使用powernowd为CPU降降温!

标签: 降温
1909人阅读 评论(0) 收藏 举报
分类:

使用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,如下表所示。
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-userspace
cpufreq-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 = ondemand
devices/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会加载这些选项。

0
0
查看评论

编程之美_003让CPU占用率划出一条直线

// CPU使用率其实就是你运行的程序占用的CPU资源,表示你的机器在某个时间点的运行程序的情况。 public class CPUTest { public static void main(String[] args) { long startTime = 0;/...
  • adam_zs
  • adam_zs
  • 2013-01-08 15:55
  • 1151

为程序选择在哪个cpu上跑

首页 > Scheduler > CPU亲和性的使用与机制 CPU亲和性的使用与机制 Scheduler 2013-08-15 CPU的亲和性, 就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,亲和性是从affinity翻译过来的,应该有点...
  • u010243305
  • u010243305
  • 2017-08-17 19:55
  • 185

ucos中对CPU使用率查看

首先设置:#define OS_TASK_STAT_EN           1          ...
  • bytxl
  • bytxl
  • 2015-12-28 13:57
  • 1568

Redis调优之指定CPU(亲和力)以及软中断

指定CPU 为什么这么做? 由于redis是单进程服务,一个redis服务进程只会使用一个内核,所以在部署redis服务的时候最好对redis进程指定CPU。 如何做? taskset是LINUX提供的一个命令,可以让某个程序运行在某个(或)某些CPU上。 1)显示进程运行的CPU ...
  • wukong_666
  • wukong_666
  • 2017-04-06 15:08
  • 452

Keras以及Tensorflow强制使用CPU

Keras如果是使用Theano后端的话,应该是自动不使用GPU只是用CPU的,启动GPU使用Theano内部命令即可。 对于Tensorflow后端的Keras以及Tensorflow会自动使用可见的GPU,而我需要其必须只运行在CPU上。网上查到三种方法,最后一种方法对我有用,但也对三种都做如...
  • silent56_th
  • silent56_th
  • 2017-05-22 17:59
  • 10391

解决AVD创建时CPU/ABI的选项无法选择问题

刚开始学习,从搭建Android环境创建第一个模拟器开始,网上很多资料,安装好后
  • maoranbian
  • maoranbian
  • 2014-07-27 15:42
  • 10354

Oracle CPU使用率过高问题处理

1.下载Process Explorer 2.打开Process Explorer,查看CPU使用情况最高的进程 3.双击该进程,查看详情 \ 4.    获取cpu使用最好的线程tid 5.    查询sql_id select sq...
  • shujudeliu
  • shujudeliu
  • 2015-06-06 10:43
  • 2625

获取进程CPU占用率 -- NtQuerySystemInformation

今天,我们主要讨论的是一个函数NtQuerySystemInformation(ZwQuerySystemInformation)。当然,你不要小看这么一个函数,它却为我们提供了丰富的系统信息,同时还包 括对某些信息的控制和设置。 以下是这个函数的原型: typedef NTSTATUS (__st...
  • jiangqin115
  • jiangqin115
  • 2015-07-28 20:12
  • 1872

Linux下调节CPU使用的几种方法

一,使用taskset充分利用多核cpu,让cpu的使用率均衡到每个cpu上 #taskset -p,    设定一个已存在的pid,而不是重新开启一个新任务 -c,    指定一个处理,可以指定多个,以逗号分隔,也可指定范围,如...
  • bpingchang
  • bpingchang
  • 2014-06-18 22:30
  • 1143

作业编程题111页 用类描述计算机中CPU的速度和硬盘容量

用类描述计算机中 CPU 的速度和硬盘的容量。要求 Java 应用程序有 4 个类,名字分别 是 PC、CPU、HardDisk 和 Test,其中 Test 是主类。 CPU 类 要求 getSpeed()返回 speed 的值,要求 setSpeed(int m)方法将参数 m 的值 赋值给 ...
  • kouhotei
  • kouhotei
  • 2017-11-13 22:19
  • 132
    个人资料
    • 访问:558801次
    • 积分:6017
    • 等级:
    • 排名:第5002名
    • 原创:145篇
    • 转载:54篇
    • 译文:0篇
    • 评论:98条
    最新评论