当前位置:操作系统 > Unix/Linux >>

为笔记本电脑用户配置cpufreqd

用 notebook 如果不配好 speedstep, 风扇的声音会很烦, 电池时间当然也会减少 ---- 不过我倒不在意它, 因为基本不用电池.

  常用的 speedstep 软件, 有 cpudyn, cpufreqd, powernowd, 而新版的 kernel 里面的 cpufreq_ondemand, 也能够按照系统负荷来调整 cpu 频率.

  那为什么不直接用 cpufreq_ondemand 呢 ? 举个例子, 有些网站有些糟糕的 javascript, 会让 cpu 利用率到 100%, 我可不想为这些网站让 cpu 跑全速, 我希望cpu 只是跑 gcc/g++/make, 或者加上 bzip2, gzip 等时候, 才跑全速, 其他时候, 凉快一点好. 这就需要 cpufreqd 了, 核心自己, cpudyn 和 powernowd 做不到.

  需要使用 speedstep, kernel 配置,

  代码:

  1. 提供操作 speedstep 的 api

  例如 speedstep_smi, speedstep_ich, speedstep_centrino 之类的, 核心配置的地方有说明, 根据自己机器的具体情况选择正确的就好了,

  基本上是

  centrino 当然是 名字都对应的 speedstep_centrino

  图拉丁 PIII-M 和 P4-M 的机器, 可以用 speedstep-ich 模块 来访问 speedstep

  铜矿 PIII 用 speedstep_smi

  台式机 P4 也有一个 X86_P4_CLOCKMOD 接口

  2. cpufreq governor

  cpu 频率的控制者

  如果 speedstep 那边已经加载了合适的模块, 那么加载 cpufreq_perfermance 这个 gover, 那么

  cpu 会一直跑高速, 如果加载 cpufreq_powersafe 这个gover, 就会一直跑低速, 如果加载

  cpufreq_ondemand 就让核心根据 cpu 负荷自动调整, 如果加载 cpufreq_userspace, 那么用户

  级代码可以直接通过 /sys/devices/system/cpu/cpu0/cpufreq 来控制频率.

  cpudyn, cpufreqd, powernowd 他们除了需要有合适的 speedstep 接口, 相关的 gover, 还需要

  /proc 或者 /sys 里面的用户级代码和核心代码的通信接口, 每个软件需要的不太一样,我懒得细细

  检查, 编译核心的时候将每个接口选了, 包括这三个过时接口 /proc/cpufreq, /proc/sys/cpu/

  /proc/acpi/processor/../performance, 反正这也不会增大多少开销.

  cpufreqd 不会自动 load module, 所以, 用到的 cpufreq_gov, 就是 cpufreq_performance,

  cpufreq_powersave, cpufreq_ondemand 那几个, 要么编译到内核里, 要么在 modules 中进行

  装载.

  我是让 cpufreqd 使用 acpi 而不是 apm 来工作的, 因此, 系统必须安装 acpid

  我的 /etc/modules 如下

  代码:

  speedstep-ich

  cpufreq_powersave

  cpufreq_performance

  我的 cpufreqd.conf 是为编译提供高速 cpu, 其他时候低速的, 如下

  代码:

  # 这里省略掉了 profile 的定义, 用回缺省的就好.

  [General]

  pidfile=/var/run/cpufreqd.pid

  poll_interval=4

  pm_type=acpi #(acpi, apm or pmu)

  # Uncomment the following line to enable ACPI workaround (see cpufreqd.conf(5))

  # acpi_workaround=1

  verbosity=4 #(if you want a minimal logging set to 5)

  #非编译 ac

  [Rule]

  name=not_important

  ac=on # (on/off)

  battery_interval=0-100

  cpu_interval=0-100

  profile=lo_power

  #非编译 电池

  [Rule]

  name=not_important_bat

  ac=off # (on/off)

  battery_interval=0-100

  cpu_interval=0-100

  profile=lo_power

  #这两个, 即使 programs 没有匹配, 也会得到 14 分, 因此放在后面, 使得program不匹配的时候, 上面两个同分, 使用上面两个

  #gcc 编译, ac

  [Rule]

  name=important

  ac=on # (on/off)

  battery_interval=0-100

  programs=cc1,cc1plus,make

  cpu_interval=80-100

  profile=hi_boost

  #gcc 编译, 电池

  [Rule]

  name=important_bat

  ac=off # (on/off)

  battery_interval=0-100

  programs=cc1,cc1plus,make

  cpu_interval=80-100

  profile=hi_boost

  然后 killall -SIGHUP cpufreqd, cpufreqd 就能够正常工作了, 这样灵活的配置, windows 下面好象也只有 ibm/sony/toshiba 三家的程序可以做到http://sourceforge.net/projects/bioswriter/

  在LINUX读写BOIS的工具'

  

上一个:如何在Linux下实现设备的配置(上)
下一个:支持基于Linux的USB设备的三种方法

更多Unix/Linux疑问解答:
路由原理介绍
子网掩码快速算法
改变网络接口的速度和协商方式的工具miitool和ethtool
Loopback口的作用汇总
OSPF的童话
增强的ACL修改功能
三层交换机和路由器的比较
用三层交换机组建校园网
4到7层交换识别内容
SPARC中如何安装Linux系统(2)
SPARC中如何安装Linux系统(1)
用Swatch做Linux日志分析
实战多种Linux操作系统共存
浅析Linux系统帐户的管理和审计
Linux2.6对新型CPU的支持(2)
电脑通通透
玩转网络
IE/注册表
DOS/Win9x
Windows Xp
Windows 2000
Windows 2003
Windows Vista
Windows 2008
Windows7
Unix/Linux
苹果机Mac OS
windows8
安卓/Android
Windows10
如果你遇到操作系统难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,