术语表/CPU、GPU和能耗

% CPU

又称:CPU百分比、CPU超过100%

简要回答

“% CPU”是某个进程占用的处理器能力份额,按单个CPU内核计算。每个内核各算100%,所以同时使用多个内核的进程可以显示超过100%。

活动监视器中的“% CPU”列告诉你某个进程让处理器有多忙。100%表示这个进程相当于占满了一个内核。在有八个内核的Mac上,所有进程加起来的上限是800%。

数值高不一定有问题。导出视频、编译代码或为文件建立索引,本来就会在一段时间里占用大量CPU。只有当你没让某个进程做任何事,它却一直居高不下时,才算是问题。

为什么“% CPU”会超过100

活动监视器会把一个进程在每个内核上花的时间加起来。如果一个App同时在三个内核上满速运行,就会显示大约300%。对于视频编辑器、编译器和浏览器这类为多线程而设计的App,这很正常。

“CPU”标签页底部的“系统”“用户”和“闲置”数值则不一样。它们描述的是整个处理器,所以三者加起来是100%。

“% CPU”没有告诉你的事

“% CPU”衡量的是内核有多少时间在忙,而不是内核跑得有多快。在Apple silicon上,性能核心和能效核心都可能显示100%,但完成的工作量差别很大。

它也看不出App是否响应。一个App可能在等待某样东西时卡死,CPU却是0%;也可能占着400%,依然响应正常。

如何找出是什么在占用CPU

打开活动监视器,点按“CPU”标签页,再点按“% CPU”列标题,从高到低排序。观察几秒钟,因为每次更新数值都会变。

在“终端”中,top -o cpu会显示同样按CPU占用排序的列表。按q退出。

如何查出你的Mac上“% CPU”的最大值

“% CPU”的上限是100%乘以macOS可以调度工作的内核数。你可以在“终端”中查到这个数字,不必去猜。

  1. 从“应用程序”>“实用工具”中打开“终端”。
  2. 运行sysctl -n hw.logicalcpu。它会输出逻辑内核数。
  3. 把这个数字乘以100。这就是所有进程加起来能显示的最大“% CPU”,也是单个进程占满所有内核时能达到的最大值。
  4. 在搭载Apple silicon的Mac上,运行sysctl hw.perflevel0.logicalcpu hw.perflevel1.logicalcpu,查看这些内核中有多少个性能核心、多少个能效核心。

Apple silicon和Intel:怎样才算一个内核

在支持超线程的Intel Mac上,每个物理内核会显示为两个逻辑内核。sysctl -n hw.physicalcpu显示物理内核数,sysctl -n hw.logicalcpu显示逻辑内核数,而“% CPU”是按逻辑内核数计算的。所以一台有四个物理内核的Intel Mac,可以显示某个进程占用高达800%。

Apple silicon不使用超线程,所以物理内核数和逻辑内核数相同。Apple silicon的不同之处在于性能核心和能效核心的搭配。在能效核心上占用100%的进程,完成的工作比在性能核心上占用100%的进程少。

如果你想知道某个App是否在Apple silicon上原生运行,选取“显示”>“列”并打开“种类”。原生App显示“Apple”,通过Rosetta转译运行的App显示“Intel”。

如何判断App是否真的占用了过多CPU

Apple指出,大多数时候你的Mac只用了一小部分处理能力。数值高,但你说得出原因,那就没问题。以下迹象才说明真的有问题:

  • 你没在用这个App,它却连续几分钟居高不下。
  • 它稳定在100%左右一动不动。这通常意味着有一个线程陷入了循环,占满了一个内核。
  • App待在后台时,它的“CPU时间”列仍在快速攀升。
  • 同时风扇变响、Mac摸起来发热,或者电池掉得比平时快。
  • 关掉引发这些工作的窗口、文稿或标签页后,数值仍然不降。

某个App让CPU一直忙碌怎么办

  1. 在活动监视器中点按“CPU”标签页,按“% CPU”排序。观察一分钟,以免被短暂的峰值误导。
  2. 如果这个进程是帮助程序,选取“显示”>“所有进程,分层显示”,看看它属于哪个App。
  3. 存储你的工作,然后正常退出App。如果它没有响应,选择它并使用“强制退出”。
  4. 再次打开App。如果CPU占用又莫名其妙地升高,就看看开发者有没有发布更新。
  5. 如果问题反复出现,在活动监视器中对该进程取样,并发给开发者。取样会显示App当时在做什么。

常见问题

Mac上“% CPU”超过100是什么意思?

表示这个进程同时使用了不止一个CPU内核。每个内核算100%,所以占满两个内核的进程会显示200%。

App的“% CPU”多少算正常?

你没在用的App,大多数时候应该接近0%。短暂的峰值很正常。后台App连续几分钟居高不下,就值得仔细看看。

为什么什么都没开,Mac的CPU占用却很高?

macOS会运行后台任务,比如“聚焦”索引、照片分析和备份,而且常常趁Mac闲置时进行。这些任务完成后,占用通常就会降下来。

Mac上CPU占用100%是坏事吗?

本身不是。100%表示一个内核完全忙碌,这在导出或编译时很正常。只有在App本该闲着时还一直如此,才是问题。

为什么“CPU负载”图表看起来还空着一半,某个App却显示400% CPU?

单个进程的“% CPU”是按一个内核计算的,而“系统”“用户”和“闲置”数值描述的是整个处理器。在有八个内核的Mac上,占用400%的进程大约用了总量的一半。

活动监视器多久更新一次“% CPU”?

你可以通过“显示”>“更新频率”来选择:“非常频繁(1秒)”“频繁(2秒)”或“一般(5秒)”。Apple指出,更新越快,本身也可能影响性能。

相关条目

分步指南:哪个App在占用CPU或内存。

想找比活动监视器更好的工具?请看Mac上最好用的活动监视器替代品,或者浏览术语表中的所有条目。