原文取自 http://www.thinkwiki.org/wiki/How_to_reduce_power_consumption
(翻译中并不是完全按照原文翻译)
引言
减少系统能源的消耗就可以延长电池的寿命,也可以降低系统的温度,还可以减小风扇的噪音。对于怎么节能,我们可以从下面几方面考虑:
- 卸载一些不使用的设备的驱动(例如 USB1.1,无线,蓝牙等)
- 减少设备的查询
- 减少硬件的活动
- 降低 LCD 等一些显示设备的亮度,但是不能影响用户的使用
- 减少 CPU 唤醒次数,这样 CPU 就可以更长时间处于省电的状态C-STATES(c0是正常工作状态,后面数字越大,CPU 的功耗越小。目前我所知道 C6 是功耗最小的)
- 确保开启了硬件节能特性(USB autosuspend,Wireless powersaving modes等)
下面主要从几个方面具体说明:
一、工具
我们可以使用一些工具帮助我们实现节能。PowerTop 就是一款 Linux 下的在诊断能耗和电源管理软件。主要应用与 Intel 平台,现在貌似也支持 ARM。这款工具可以帮助我们轻松的找到用户空间和内核模块中能耗最大的项,这些能耗大的不利于 CPU 省电机制的使用,并且有时候会建议修正。现在 PowerTop 版本发布到了 v2.1,有一个交互的选项卡。改软件整体界面很简洁。想了解更多:https://01.org/powertop/
这里就举着一个例子了,当然了,Linux下还有其他的管理软件。
二、BIOS 设置
BIOS 有很多的版本,在可能的版本中我们应该进行一下两方面的设置:
1)启动电源管理
我们应该启用电源管理。但是有的 Thinkpad BIOS(像 2.08 BIOS On X40)提供了两个怪异的选项,并且在线帮助中有误导的描述(描述为:“通常不需要”),就是下面两个选项
CPU power management: (default disabled) PCI bus power management: (default disabled)
但是实际上应该选择启用,不然的话 CPU 深度睡眠的 C3 和 C4 状态就被禁用了。
2)禁用I/O端口
BIOS可以设置禁用一些I/O端口,例如 PCMCIA/CardBus 。这些设置需要重启才能生效。通过修改 BIOS 设置比在配置文件设置要方便,因为在发行版的变化中 BIOS 修改后的设置依然有效。知道怎么设置禁用的话,用户重新启用这些设置也很容易。禁用这些设备可以节约好几瓦的能源。
三、CPU
请先了解下面两点:
- 如何使用变频技术(How
to make use of Dynamic Frequency Scaling) - 奔腾M的降压和降频(Pentium
M undervolting and underclocking)
要知道 CPU 的每一次被唤醒,即使是做一件很简单的工作,都会减少 CPU 深度睡眠的时间(CPU 处于节能的 C-STATES,如 C3 , C4)。因此你需要确保你的程序在空闲状态时要真的让它空闲下来。
我们也要注意到把 CPU 手动设置到 P-STATES 不是一个延长电池剩余时间的有效方法。这种方法会是CPU长期处于 C0 状态(C0 状态是最耗电的状态,是正常运行的状态)。这些工作本来可以在增大 CPU 频率的情况下很快的处理完,然后 CPU 可以很快回到一个更深度,经济的 C-STATES 和到底频率的 P-STATES。所以最好让内核通过自身的管理策略来选择合适的
CPU 的工作频率。
CPU 的工作频率。
四、内核设置和 PATCHES
1)通用设置
2.6.21 内核带给我们一些很有用的改变(如dynticks)。后来,2.6.24-rc2
带来了更多其他提高能源效率的改变。如果你的发行版中没有这些,但是你很重视能效的话那么可以考虑重新编译一个内核。具体请参考原文:http://www.thinkwiki.org/wiki/How_to_reduce_power_consumption
带来了更多其他提高能源效率的改变。如果你的发行版中没有这些,但是你很重视能效的话那么可以考虑重新编译一个内核。具体请参考原文:http://www.thinkwiki.org/wiki/How_to_reduce_power_consumption
2)内核启动和模块载入设置
在这里文章中是针对 Thinkpad 笔记本做的讲解,具体不再叙述了。
......
五、ATA 驱动器
硬盘驱动器和光盘驱动器旋转都是需要很大的代价的。为了延长电池使用时间,我们应该尽可能减少磁盘的访问(或者磁盘的寻道)。
1)硬盘
文件访问时间更新,按照 POSIX 规定,会造成大量的磁盘写访问:即使访问文件存在与磁盘缓存上,这也会唤醒 ATA 和 USB 总线。如果不用这些特性,那么通过添加 relatime 选项到 /etc/fstab 中的相关位置。例如:
/dev/sda1 / ext3 relatime,errors=remount-ro 0 1
(在更老的版本中需要使用 noatime 来代替 relatime)
也可以考虑使用一个较大的值作为 commit 选项,这个数值规定了数据写入磁盘的频率(之前数据在缓存中),默认值是 5 秒。
参见 man mount (8) ,其中有对 rel/noatime 和 commit 选项生效更详细的描述。
使用 laptop_mod 来通过延时和分组写来减少磁盘的使用。至少应该在电池方面启用。详情参见:Laptop-mode
echo 5 > /proc/sys/vm/laptop_mode
内核中默认脏页写回频率是很保守的。在使用电池的笔记本上,可以把它降到更合适的位置:
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
一些省电硬件驱动特性可以通过dhparm 参数被激活。要注意的是,当你有很多间歇的磁盘活动的时候,会产生大量的磁头加载和卸载,这时候 “-B 1”可能会减少驱动器的寿命。所以呢,从以上看来,延长磁盘的空闲时间最好的办法是减少 I/O 活动。更多参见:How
to make use of Power Management features
hdparm -B 1 -S 12 /dev/sda # and/or any other disk device
2)SATA LPM
在 2.6.24 及更新的内核中通过下面方式可以启动 SATA LPM:
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy echo min_power > /sys/class/scsi_host/host1/link_power_management_policy echo min_power > /sys/class/scsi_host/host2/link_power_management_policy
要禁用的话只需要把 min_power 换成 max_performance。
使用 host 后面的数字取决与电脑,通常是 0 代表主要驱动器,但是也有例外,在 Thinkpad 的 T61 就不是这样的。
在 Ubuntu Hardy Heron (一个 Ubuntu 较早的版本,内核是 2.6.24-16)中,如果在初始化 suspend 之后禁用 SATA LPM,suspend / resume 的周期会变得更快了。在 Intrepid Ibex (之后的一个Ubuntu
版本,内核是 2.6.27) 修复了这个问题。
版本,内核是 2.6.27) 修复了这个问题。
3)笔记本模式工具(Laptop Mode Tools)
这个工具实现了以上很多节能的方案。主要是针对磁盘,当然也有针对其他方面的功能,例如也可以调节 CPU 频率。
具体参见:Laptop
Mode Tools
Mode Tools