平均负载
又称:系统负载
简要回答
平均负载是CPU上正在运行或等待运行的平均工作量,通常用三个数字表示过去1分钟、5分钟和15分钟的情况。它是Unix的一项指标,在Mac上可以用uptime命令查看。
平均负载为4.0,表示平均约有四个线程正在运行或准备运行。这算不算多,取决于你的Mac有多少个CPU内核。在八核Mac上,4.0的负载还绰绰有余。
活动监视器不显示平均负载。它的“CPU”标签页显示的是“系统”“用户”和“闲置”百分比以及“CPU负载”图表。平均负载主要在“终端”和脚本中有用。
本页内容
如何在Mac上查看平均负载
打开“终端”并运行uptime。最后三个数字就是1分钟、5分钟和15分钟的平均负载。也可以运行sysctl -n vm.loadavg。
要和内核数量对比,运行sysctl -n hw.logicalcpu。
如何看懂这三个数字
如果1分钟的数字远高于15分钟的数字,说明负载在上升;如果更低,说明负载在下降。负载长时间远高于内核数量,说明有工作在排队等CPU,Mac会感觉变慢。
平均负载与活动监视器中的“% CPU”
两者衡量的是不同的东西。“% CPU”和“闲置”数值显示的是内核有多少时间在忙。而平均负载,按top手册的说法,是运行队列中的平均作业数:正在运行或准备运行的线程。
所以两者可能对不上。活动监视器可能显示“闲置”还有很多,而平均负载却高于你的内核数。大量短任务可能在队列里堆积,却不会让每个内核在整个时间段内都忙着。
要比较两者,用平均负载除以sysctl -n hw.logicalcpu给出的内核数。结果低于1,表示平均而言,每个需要内核的线程都能得到一个。
如何实时观察平均负载
uptime只输出一次这三个数字。要观察它们的变化,在“终端”中运行top。靠近顶部、以Load Avg开头的那一行显示1分钟、5分钟和15分钟的值,下面的CPU usage行显示user、sys和idle百分比,这样两者可以同时看到。按q退出。
要获得一份可以粘贴到笔记或脚本中的快照,运行top -l 1 -n 0 | grep "Load Avg"。
平均负载高什么时候需要在意
负载高是一种症状,而不是故障。要结合Mac用起来的感觉来看。
- 如果负载一直远高于内核数,而且App反应迟缓,就需要在意,因为有工作在排队等CPU。
- 在编译、导出或大量拷贝期间,就没那么重要。这些任务本来就应该把每个内核都占满。
- 在Apple silicon上,内核数包括能效核心。macOS会把大量后台工作放到能效核心上运行,所以即使负载接近内核数,性能核心也可能仍然空出来给你正在用的App。
- 负载无缘无故升高并一直居高不下,背后通常有一个忙碌的进程。在担心这个数字之前,先把它找出来。
如何找出是什么让负载升高
- 在活动监视器中点按“CPU”标签页,按“% CPU”排序,找出工作量最大的进程。
- 在“终端”中运行
top -o th -stats pid,command,cpu,th。#TH列显示线程总数,斜杠后面是此刻正在运行的线程数。 - 有多个线程在运行的进程,对负载的贡献最大。退出不需要的程序,几分钟后再查看负载,因为1分钟的值最先有反应。
常见问题
Mac上正常的平均负载是多少?
这取决于内核数量。负载等于或低于内核数量,通常说明CPU忙得过来。长时间远高于内核数量,就说明工作在排队。
活动监视器会显示平均负载吗?
不会。活动监视器显示“系统”“用户”和“闲置”百分比以及“CPU负载”图表。要查看平均负载,可在“终端”中使用uptime。
为什么CPU占用不高,平均负载却很高?
平均负载统计的是等待运行的工作,而不只是正在运行的工作。大量短任务,或者排队等候的任务,都可能让它升高,而CPU百分比看起来并不高。
八核Mac的平均负载多少算好?
负载等于或低于8,说明CPU忙得过来。短暂超过8是正常的。如果负载长时间远高于8,Mac又很迟缓,说明工作在排队。
平均负载是百分比吗?
不是。它是正在运行或等待运行的线程的平均数量。负载2.0表示大约两个线程,而不是任何东西的2%。
平均负载包括GPU吗?
不包括。它统计的是等待CPU的线程。GPU正在做的工作不计入其中,所以要了解图形负载,就在活动监视器中查看“% GPU”。
相关条目
想找比活动监视器更好的工具?请看Mac上最好用的活动监视器替代品,或者浏览术语表中的所有条目。