OSX 活动监视器与平均负载



我知道平均负载(使用终端上的"正常运行时间"命令获得(给出了处于等待或就绪状态的进程量的平均值。我可以看到我的 mac 的平均负载约为 2-3。但是,当我同时打开活动监视器时,它显示有数百个进程正在运行。我想知道为什么会有如此巨大的差异。

在 Mac 上,正常运行时间正在检查的状态的名称是"可运行的",其中包括当前在 CPU 上运行的进程和如果有内核可用的话将在 CPU 上运行的进程。因此,负载平均值小于系统内核数表示很少或没有争用内核。每个想要核心的进程都有一个核心。平均负载大于内核数表示有时必须等待可运行的进程才能计划。

大多数进程将绝大多数时间都花在可运行状态以外的某种状态。Mac 上最常见的状态称为"睡眠",这意味着进程正在等待内核中的某些内容。等待的一件非常常见的事情是用户输入。它还可能正在等待磁盘或网络流量或计时器。但无论如何,进程被阻塞,等待内核中的某些内容,即使有可用的内核,也不会被调度,因为它没有任何关系。

这就是为什么数百个进程可以处于活动状态,但对 CPU 没有影响的原因......有点。进程不按内核代表它们工作所花费的时间"收费"。因此,您会看到一个名为kernel_task的虚假过程,它可能占总数的很大一部分。这是内核正在执行的操作,有时是为了响应用户进程请求的操作(例如磁盘 I/O 或发送网络数据包(。另一方面,手kernel_task也表示内核从系统中"窃取"以管理 CPU 温度的时间。因此,有时很难真正弄清楚kernel_task用法的含义。

最新更新