2.2. PowerTOP
红帽企业版 Linux 6 中引进的无空循环内核(请参考 第 3.4 节 “无空循环内核”)可允许 CPU 更频繁地进入闲置状态,降低能耗并改进电源管理。新的 PowerTOP 工具可识别具体是哪些内核组件和用户空间程序经常唤醒 CPU。PowerTOP 用于开发执行 第 3.11 节 “在用户空间中优化” 中论述的审核,这样就在这个发行本中调整了很多程序,不必要的 CPU 唤醒降低了 10 倍。
使用以下命令安装 PowerTOP:
yum install powertop
使用以下命令运行 PowerTOP:
powertop
请注意:您运行 PowerTOP 将需要 root 特权方可允许程序有效运行。
当 PowerTOP 运行时会从系统中收集统计数据并为您显示最频繁向 CPU 发送唤醒请求的组件列表。PowerTOP 还会为降低系统能耗向您提出建议。这些建议出现在屏幕底部,并指定您要接受 PowerTOP 建议时需要按的按键。因为 PowerTOP 是周期性刷新,届时会有进一步的建议。在 图 2.1 “PowerTOP 操作中” 中,建议您
增加虚拟机脏回写时间
以及接受该建议时要按的按键(W)。
当 PowerTOP 运行时会从系统中收集统计数据并为您显示几个重要信息列表。列表顶端是您的 CPU 核处于可用 C 状态和 P 状态的时间长度。CPU 处于 C 状态或者 P 状态时间越长越好(
C4
高于 C3
),也显示了是如何更好利用 CPU 的。您的目标应该是 90% 或者以上的时间 CPU 处于 C 状态或者 P 状态,其余时间系统处于闲置状态。
第二项信息是机器每秒实际唤醒总数。每秒唤醒数让您根据系统电源消耗了解服务或者设备以及内核驱动程序是否运行良好。每秒唤醒数越大,耗能越多,因此这里数字越小越好。
下一步,如果可能,PowerTOP 提供系统电源使用的估计值。预计 PowerTOP 会在使用电池模式的笔记本电脑中报告这个数字。
所有可用耗电估计值都跟着一个最常向 CPU 发送唤醒的组件详细列表。列表的顶端是那些您需要更详细调查以便优化系统降低能耗的组件。如果它们是内核组件(组件名称被列在
<
>
中),那么唤醒通常与导致这些唤醒的特定驱动程序关联。调整驱动程序通常需要更改内核,这已经超出本文档涉及范围。但是,发送唤醒的用户空间进程更容易管理。首先要确认这个服务或者应用程序是否应该在这个系统中运行。如果不是,只要失活它即可。要永久关闭某个服务,请运行:
chkconfig servicename off
如果您需要了解该组件具体执行任务的详细信息,请运行:
ps -awux | grep componentname
strace -p processid
如果追踪看来像是不断的重复,那么您可能已经找到了忙碌回路。要修复这个问题需要更改那个组件的代码,但这已经超出本文档的范围。
最后,PowerTOP 还会为降低系统能耗向您提出建议。这些建议出现在屏幕底部,并指定您要接受 PowerTOP 建议时需要按的按键。因为 PowerTOP 是周期性刷新,届时会有进一步的建议。在 图 2.1 “PowerTOP 操作中” 中,备注建议您
增加虚拟机脏回写时间
以及接受该建议时要按的按键(W)。这些更改要在下一次引导时生效。要使这些更改持久,PowerTOP 会显示执行这个优化具体要执行的命令。请使用您的首选文本编辑器在您的 /etc/rc.local
文件中添加命令以便其在每次启动计算机时都有效。
图 2.1. PowerTOP 操作中
Less Watts 网站发布了由 PowerTOP 识别的保持 CPU 活跃的应用程序列表。请参考 http://www.lesswatts.org/projects/powertop/known.php。