我知道Avg (在终端上使用"uptime“命令获得)提供了处于等待状态或就绪状态的进程数量的平均值。我可以看到我的mac的平均负载在2-3左右。但是,当我同时打开活动监视器时,它显示有数百个进程在运行。我想知道为什么会有这么大的差别。
发布于 2019-09-16 00:55:57
在Mac上,运行时检查的状态名为"runnable“,它包括当前运行在CPU上的进程和如果有可用的核心就在CPU上运行的进程。因此,负载平均值小于系统核心的数量,这意味着很少或根本没有核心争用。每一个想要一个核心的过程都有一个。大于核心数的负载平均值表明,有时可运行的进程必须等待调度。
大多数进程的绝大部分时间都在某种状态中,而不是运行状态。Mac上最常见的状态称为“休眠”,这意味着进程正在等待内核的东西。等待的一个非常常见的事情是用户输入。它也可能在等待磁盘、网络流量或计时器。但是在任何情况下,进程都会被阻塞,等待来自内核的东西,即使有一个可用的核心,它也不会被调度,因为它没有什么可做的。
这就是为什么数百个进程可以存活,但对CPU...sort没有影响。对于内核代表进程工作的时间来说,进程并不是“收费”的。因此,您将看到一个名为kernel_task的假过程,它可以占总数的很大一部分。这是内核正在做的事情,有时是为了响应用户进程的请求(比如磁盘I/O或发送网络数据包)。另一方面,kernel_task还表示内核“窃取”系统管理CPU温度的时间。因此,有时很难真正弄清楚kernel_task的使用意味着什么。
https://stackoverflow.com/questions/57947443
复制相似问题