OSX Activity 监控与平均负载
OSX Activity Monitor vs Avg Load
我知道平均负载(在终端上使用 "uptime" 命令获得)给出了处于等待或就绪状态的平均进程数。我可以看到我的 mac 的平均负载大约是 2-3。但是,当我同时打开 activity 监视器时,它显示有数百个进程 运行。我想知道为什么会有这么大的差异。
在 Mac,uptime 正在检查的状态名称是 "runnable",其中包括当前 运行 在 CPU 上的进程和 运行 在 CPU 上,如果有可用的核心。因此,平均负载小于系统核心数表明几乎没有或没有核心争用。每个想要核心的进程都有一个。平均负载大于核心数表示有时可运行的进程必须等待调度。
大多数进程的绝大部分时间都处于可运行以外的某种状态。 Mac 上最常见的状态称为 "sleeping,",这意味着进程正在等待来自内核的某些东西。等待的一个很常见的事情是用户输入。它还可能正在等待磁盘或网络流量或计时器。但是无论如何,进程被阻塞,等待来自内核的东西,即使有可用的内核,它也不会被调度,因为它没有任何事情可做。
这就是为什么数百个进程可以处于活动状态,但对 CPU...某种程度上没有影响的原因。进程不是 "charged" 内核花在代表他们工作的时间。所以你会看到一个名为 kernel_task 的假进程,它可能占总数的很大一部分。这是内核正在做的事情,有时是为了响应用户进程请求的事情(例如磁盘 I/O 或发送网络数据包)。另一方面,handkernel_task也代表内核"steals"从系统to manage the CPU temperature的时间。因此,有时很难真正理解 kernel_task 用法的含义。
我知道平均负载(在终端上使用 "uptime" 命令获得)给出了处于等待或就绪状态的平均进程数。我可以看到我的 mac 的平均负载大约是 2-3。但是,当我同时打开 activity 监视器时,它显示有数百个进程 运行。我想知道为什么会有这么大的差异。
在 Mac,uptime 正在检查的状态名称是 "runnable",其中包括当前 运行 在 CPU 上的进程和 运行 在 CPU 上,如果有可用的核心。因此,平均负载小于系统核心数表明几乎没有或没有核心争用。每个想要核心的进程都有一个。平均负载大于核心数表示有时可运行的进程必须等待调度。
大多数进程的绝大部分时间都处于可运行以外的某种状态。 Mac 上最常见的状态称为 "sleeping,",这意味着进程正在等待来自内核的某些东西。等待的一个很常见的事情是用户输入。它还可能正在等待磁盘或网络流量或计时器。但是无论如何,进程被阻塞,等待来自内核的东西,即使有可用的内核,它也不会被调度,因为它没有任何事情可做。
这就是为什么数百个进程可以处于活动状态,但对 CPU...某种程度上没有影响的原因。进程不是 "charged" 内核花在代表他们工作的时间。所以你会看到一个名为 kernel_task 的假进程,它可能占总数的很大一部分。这是内核正在做的事情,有时是为了响应用户进程请求的事情(例如磁盘 I/O 或发送网络数据包)。另一方面,handkernel_task也代表内核"steals"从系统to manage the CPU temperature的时间。因此,有时很难真正理解 kernel_task 用法的含义。