活动监视器、电池状态菜单和 top¶
本文介绍了活动监视器、电池状态菜单和 top
— 三个与 Mac OS X 上提供的工具相关的工具。
注意:如果您还没有阅读功耗分析概述,建议您现在阅读。它可以使本文档的部分内容更容易理解。
活动监视器¶
这是一个内置的 OS X 工具,用于显示实时进程测量数据。它广为人知,其“能耗影响”指标很可能被用户用来比较不同程序的功耗。(Apple 支持文档 特别推荐它用于解决电池续航时间问题。)遗憾的是,“能耗影响”对于用户和软件开发人员来说都不是一个好的指标,应该避免使用。但是,活动监视器仍然有用。
与功耗相关的测量¶
活动监视器有多个选项卡。它们都可以自定义以显示任何可用的测量数据(通过右键单击列条),但只有“能耗”选项卡将子进程与父进程分组,这很有用,因此它是最佳选择。下面的屏幕截图显示了一个自定义的“能耗”选项卡。
与功耗相关的列如下所示。
能耗影响 / 平均能耗影响:请参阅下面的单独部分。
% CPU:CPU 使用率百分比。如果使用了多个内核,此值可能会超过 100%。
空闲唤醒次数:
在 Mac OS 10.9 中,它测量的是“包空闲退出”唤醒次数。这与powermetrics 的“Pkg idle”测量值相同(即从
task_info
函数获得的task_power_info::task_platform_idle_wakeups
)。在 Mac OS 10.10 中,它似乎已更改为测量中断级唤醒次数(空闲唤醒次数的超集),这不太有趣。这与powermetrics 的“Intr”测量值相同(即从
task_info
函数获得的task_power_info::task_interrupt_wakeups
)。
需要高性能 GPU:许多 Mac 都有两个 GPU:一个低功耗、低性能的集成 GPU 和一个高功耗、高性能的外部 GPU。使用高性能 GPU 会大大增加功耗,应尽可能避免。此列指示正在使用哪个 GPU。
活动监视器可用于初步测量,但对于更精确和详细的测量,其他工具(如powermetrics)更好。
“能耗影响”测量什么?¶
“能耗影响”是功耗的混合代理指标。仔细调查 表明,在 Mac OS 10.10 和 10.11 上,它是使用特定于机器型号的公式计算的,其中包括以下因素:CPU 使用率、唤醒频率、服务质量等级 使用情况以及磁盘、GPU 和网络活动。每个因素的权重可以在 /usr/share/pmenergy/Mac-<id>.plist
中的文件之一中找到,其中 <id>
可以使用以下命令确定。
ioreg -l | grep board-id
相比之下,在 Mac OS 10.9 上,它是通过一个更简单的与机器型号无关的公式计算的,该公式仅考虑 CPU 使用率和唤醒频率。
在这两种情况下,“能耗影响”通常与实际功耗的相关性很差,应避免使用,而应使用具有明确物理意义的直接测量值。
“平均能耗影响”测量什么?¶
首次打开活动监视器的“能耗”选项卡时,“平均能耗影响”列为空,标题栏显示“活动监视器(正在处理…)”。5-10 秒后,“平均能耗影响”列将填充值,标题栏将更改为“活动监视器(过去 8 小时的应用程序)”。如果您在这 5-10 秒内打开了 top
,您会看到 systemstats
正在运行并使用了大量的 CPU,因此可以推测测量值是从中获得的。
systemstats
是一个持续运行的程序,它定期测量每个运行进程的 CPU 使用率和空闲唤醒次数等内容。测试表明,它几乎肯定使用与活动监视器在 Mac OS 10.9 中用于“能耗影响”的相同公式来计算“平均能耗影响”,使用过去 8 小时唤醒时间的测量值(即,如果笔记本电脑关闭几小时然后重新打开,则这些小时不包含在计算中)。
电池状态菜单¶
当您单击 OS X 菜单栏中的电池图标时,会弹出一个下拉菜单,其中包含“正在使用大量能量的应用程序”列表。这很粗略但很突出,因此值得了解——即使它对分析应用程序没有多大用处。
当您第一次打开此菜单时,它会显示“正在收集电源使用信息”,持续几秒钟,如果您在这段时间内打开了 top
,您会再次看到 systemstats
正在运行并使用了大量的 CPU。此外,如果您单击菜单中的应用程序名称,则会打开活动监视器,并突出显示该应用程序的条目。根据这些事实,可以合理地假设“能耗影响”再次用于确定哪些应用程序“正在使用大量能量”。
测试表明,一旦启动了高能耗应用程序,不到一分钟它就会出现在电池状态菜单中。并且一旦应用程序停止使用大量能量,则需要几分钟才能消失。例外情况是应用程序关闭时,此时它会立即消失。并且似乎“能耗影响”大约为 20 或更高的程序最终会显示为显著,并且“能耗影响”值更高的程序往往会更快地显示。
所有这些电池状态菜单观察结果都难以可靠地进行,因此应谨慎对待。但是,很明显,电池状态菜单使用的窗口以秒或分钟为单位测量,这远小于活动监视器中“平均能耗影响”使用的 8 小时窗口。
top
¶
top
类似于活动监视器,但它是一个命令行实用程序。要查看与功耗相关的测量数据,请按如下方式调用它。
top -stats pid,command,cpu,idlew,power -o power -d
注意:可以使用 -a
和 -e
代替 -d
来获取不同的计数模式。有关详细信息,请参阅手册页。
它将显示如下所示的定期更新数据。
PID COMMAND %CPU IDLEW POWER
50300 firefox 12.9 278 26.6
76256 plugin-container 3.4 159 11.3
151 coreaudiod 0.9 68 4.3
76505 top 1.5 1 1.6
76354 Activity Monitor 1.0 0 1.0
PID、COMMAND 和 %CPU 列不言自明。
IDLEW 列是“包空闲退出”唤醒次数。
POWER 列的值由与活动监视器在 Mac OS 10.9 中用于“能耗影响”的相同公式计算,也应该避免使用。
top
可能对功耗分析没有多大用处。