活动监视器、电池状态菜单和 top

本文介绍了活动监视器、电池状态菜单和 top — 三个与 Mac OS X 上提供的工具相关的工具。

注意:如果您还没有阅读功耗分析概述,建议您现在阅读。它可以使本文档的部分内容更容易理解。

活动监视器

这是一个内置的 OS X 工具,用于显示实时进程测量数据。它广为人知,其“能耗影响”指标很可能被用户用来比较不同程序的功耗。(Apple 支持文档 特别推荐它用于解决电池续航时间问题。)遗憾的是,“能耗影响”对于用户和软件开发人员来说都不是一个好的指标,应该避免使用。但是,活动监视器仍然有用。

“能耗影响”测量什么?

“能耗影响”是功耗的混合代理指标。仔细调查 表明,在 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 菜单栏中的电池图标时,会弹出一个下拉菜单,其中包含“正在使用大量能量的应用程序”列表。这很粗略但很突出,因此值得了解——即使它对分析应用程序没有多大用处。

Screenshot of the OS X battery statusmenu

当您第一次打开此菜单时,它会显示“正在收集电源使用信息”,持续几秒钟,如果您在这段时间内打开了 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
  • PIDCOMMAND%CPU 列不言自明。

  • IDLEW 列是“包空闲退出”唤醒次数。

  • POWER 列的值由与活动监视器在 Mac OS 10.9 中用于“能耗影响”的相同公式计算,也应该避免使用。

top 可能对功耗分析没有多大用处。