闲置唤醒
又称:唤醒次数
简要回答
“闲置唤醒”统计某个进程把CPU从闲置状态唤醒的次数。频繁唤醒会让处理器无法休息,即使“% CPU”看起来很低,也会消耗电池续航。
CPU能长时间保持闲置时最省电。每当有进程设置计时器或检查某样东西,CPU就得醒来处理。唤醒一次代价很小,但成千上万次加起来就不少了。
你可以在活动监视器的“CPU”标签页中显示“闲置唤醒”列。它最适合用来找出那些不停轮询、却没做多少实际工作的后台App。
本页内容
如何在活动监视器中查看“闲置唤醒”
点按“CPU”标签页,然后选取“显示”>“列”,确认已勾选“闲置唤醒”。点按该列标题即可按它排序。
唤醒次数多的原因
常见原因有:用短计时器轮询更新的App、在看不见的窗口里持续播放的动画,以及一直保持连接的同步类或聊天类App。打开了很多标签页的浏览器也会产生大量唤醒。
对于隐藏的App,macOS会用“App小憩”等功能减少唤醒,放慢你没在用的App的计时器。
为什么“% CPU”很低,唤醒仍然耗电
当所有内核都闲置时,芯片不仅可以让内核断电,还能让处理器的共享部分断电。Apple的powermetrics手册解释说,一个计时器或中断打断这种深度闲置状态所消耗的能量,比CPU本来就醒着时做同样的工作要多。
所以一个App可能几乎不占用CPU时间,却依然让Mac无法休息。每次唤醒都很短,所以在“% CPU”中几乎看不出来,但芯片始终没法长时间停留在最低功耗状态。
macOS会把差不多同时到期的计时器归到一起,让CPU醒来一次就处理好几个,以此减少唤醒。Apple称之为计时器合并。对于隐藏的App,“App小憩”则更进一步,减少它们计时器的触发次数。
如何找出最常唤醒Mac的App
- 退出或隐藏你正在使用的App,让列表显示的是后台行为。
- 在活动监视器中点按“CPU”标签页,按“闲置唤醒”排序。
- 观察一分钟。记下那些你没在用、却一直排在前面的App。
- 点按“能耗”标签页,看看同样这些App在“对能耗的影响”上是否也排得很高。
- 要在“终端”中查看,运行
top -o idlew -stats pid,command,cpu,idlew。IDLEW列是累计总数,所以要看哪些数值涨得最快。按q退出。 - 要看更详细的取样,运行
sudo powermetrics --samplers tasks --order wakeups -n 1。它会列出每个进程的计时器唤醒和中断唤醒,并按把芯片拉出闲置状态的唤醒次数排序。
正常的与值得担心的闲置唤醒
没有哪个数字一定算太高,因为次数取决于App本身以及它运行了多久。重要的是规律。
- 正常:kernel_task和WindowServer这类系统进程排在前面。它们负责处理硬件事件和绘制画面,所以本来就会频繁唤醒CPU。
- 正常:你正在使用、并且在播放音频、进行通话或保持实时连接的App。
- 值得一看:一个你没在用的隐藏App,次数却一直快速攀升,尤其是它在“App小憩”列中还显示“否”。
- 值得一看:频繁刷新的小型菜单栏工具,比如显示秒数的时钟或实时统计数据。很多这类工具允许你在设置中选择更长的刷新间隔。
唤醒次数过多的App怎么处理
在App的设置中找找刷新或同步间隔,把它调长。关掉不需要的实时预览或动画。更新App;如果问题依旧,就告诉开发者:Apple要求开发者尽量少用计时器,所以一个闲置App不停地唤醒,是值得报告的bug。
常见问题
活动监视器中的“闲置唤醒”是什么意思?
它是某个进程把CPU从闲置状态唤醒的次数。次数多的App,即使“% CPU”很低,也可能耗电。
“闲置唤醒”次数多是坏事吗?
不一定。播放音频或保持网络连接的App需要经常醒来。最该留意的是那些你没在用、却依然排在前面的App。
如何减少闲置唤醒?
退出不用的App,关掉不需要的浏览器标签页,并让App保持最新。隐藏或最小化App,也能让“App小憩”放慢它们。
为什么kernel_task的闲置唤醒这么多?
kernel_task就是macOS内核,它负责处理来自键盘、触控板、网络和存储设备等硬件的中断。它的次数高是意料之中的事,不需要处理。
Mac接通电源时,闲置唤醒还重要吗?
没那么重要。唤醒主要消耗的是电池续航。接通电源时,它们只会增加一点能耗和热量,很少是Mac变慢的原因。
闲置唤醒多少算好?
没有固定的标准值。把各个App相互比较,找出那些你没在用、次数却仍在快速攀升的App。
相关条目
分步指南:是什么在消耗Mac的电量。
想找比活动监视器更好的工具?请看Mac上最好用的活动监视器替代品,或者浏览术语表中的所有条目。