一:前言
对于嵌入式设备或者PC平台来说,功耗是系统的重要指标,系统设计的重要目标之一就是要尽可能地降低功耗。想要降低功耗,就要知道功耗是如何被产生的,是哪些程序经常占用更多的功耗呢?
PowerTOP 就是这样一款软件,通过在linux平台上运行它,我们就可以清楚的看到是哪些程序经常把CPU 从深层睡眠中唤醒了,剩下的就是想办法去掉这些Timer,在搭配LINUX2.6.21 中的新特性dynamic tick,就可以让CPU 在不工作的时候更好的休息了,从而减少功耗,延长电池的使用时间了。
二:PowerTOP 简介
众所周知,计算机运行程序会使计算机使用更多的功耗。PowerTOP 是一款Linux的工具,能帮助人们发现这些程序。而占用功耗最多的就是linux 的内核,然而在新的linux 内核版本2.6.21 下,是无滴答内核,不再有一个固定的1000HZ 的定时器滴答,所以理论上来讲将节省很多电能,因为CPU 停留在系统同空闲时间较长的低功耗模式。然而,有很多不能预料的程序会破坏这个体制,包括内核和用户空间。PowerTOP 结合各种来源的信息从内核到一个方便的屏幕,让人们可以看到他们的系统是如何做省电,哪些组件是最大的问题。
PowerTOP 有以下四个基本目标:
显示系统是如何使用各种硬件省电功能的。
显示系统中占用功耗较多的组件,阻止软件程序影响硬件省电功能。
帮助 Linux 开发人员测试他们的应用和实现最佳的应用。
提供优化建议,以实现低功耗。
下面以实际电脑上运行状态为例分析
三:实验平台
Vmware Workstation 8.0.2 build-591240
Ubantu Linux Version 12.04
PowerTOP 1.97
四:实验分析
在笔记本电脑上运行 #sudo apt-get install powertop 就可以获取最新版本的PowerTOP,但是要但是要真正实用的分析功能,还需要把 kernel 中的 debug 功能打开。
下面是在在笔记本电脑上的实验结果:
Wakeups per second
"Wakeups per second"行是另一个指标用于显示笔记本电脑在节省电源方面的好坏。这个数值越小越好。当运行一个完全的较小的桌面时,使用3 wakeups per second 就可以完成。我的笔记本电脑在这方面性能比较差 (39远大于3!)
GPU ops/second (Operations Per Second,操作/秒)
这个显示的是图形处理器每秒操作数,由于在空闲状态下,所以为0
VFS ops/second
这个显示虚拟文件系统每秒操作数,由于在空闲状态下,所以为0
Causes for wakeups
PowerTOP 在随机的几个阶段显示是哪些资源经常唤醒CPU,在上面显示中,前三位为三个进程(process)。其次是timer唤醒时钟,还包括一些无线设备经常唤醒CPU。
五:总结
用户可以根据软件界面直观的判断是什么经常将cpu经常从低功耗状态唤醒,同时,新版本的powertop还会在用户界面上提供如何降低功耗的建议,通过软件的反馈,及时修正,将使支持 trickless 内核的体系结构的linux用户获得更好的体验。
六:参考资料
https://lesswatts.org/projects/applications-power-management/
http://packages.ubuntu.com/precise/libnl-genl-3-200-udeb