我无法理解htop
Linux top 命令的流行替代品所显示的信息。
在上面的屏幕截图中,列出了许多 Java 实例,但只有父实例使用了 CPU 时间。其他的是什么?
为什么 CPU 利用率栏显示核心如此繁忙,而 CPU% 栏显示所有进程中没有太多事情发生?事实上,它们大多数时候的移动毫无关联。
为什么右上角的平均负载(我认为是 3 步历史记录)这么低,而核心几乎总是绿色并且看起来很忙?
有人能解释一下如何读取这些信息吗?
答案1
关于“负载”和CPU%,维基百科有详细的解释和例子,以下是部分引用
空闲计算机的负载数为 0,每个使用或等待 CPU 的进程(就绪队列或运行队列)都会使负载数增加 1。大多数 UNIX 系统仅计算处于运行(在 CPU 上)或可运行(等待 CPU)状态的进程。但是,Linux 还包括处于不间断睡眠状态(通常等待磁盘活动)的进程,如果由于 I/O 系统繁忙或停滞而导致许多进程仍处于 I/O 阻塞状态,则会导致截然不同的结果。例如,这包括由于 NFS 服务器故障或介质速度慢(例如 USB 1.x 存储设备)而阻塞的进程。这种情况可能会导致平均负载升高,这并不反映 CPU 使用率的实际增加(但仍可以了解用户需要等待多长时间)。
系统将负载平均值计算为负载数的指数阻尼/加权移动平均值。负载平均值的三个值指的是系统运行的过去一分钟、五分钟和十五分钟。
对于受 CPU 限制的单 CPU 系统,可以将平均负载视为相应时间段内系统利用率的百分比。对于具有多个 CPU 的系统,必须将该数字除以处理器数量才能得到可比较的百分比。
这些条形图可能在忙碌地移动,但它们永远不会达到 100%,这将表明 CPU/核心已充分利用。条形图只是对 CPU 利用率百分比的可视化,百分比分别为 27%、26.5%、24.5%、24.7% 和 71.7%。所有 CPU 核心仍然有“剩余”电量。此时,它们都未得到充分利用。
充分利用 5 核/CPU 系统的负载将达到 5 或更高。
关于 Java 行,它们是父进程(PID=5073)和子进程。我无法解释为什么父进程累积了最多的 CPU 时间。这实际上取决于程序的内部逻辑。但是,根据 TIME+,这些子进程确实消耗了 CPU 时间,其中最后一个(PID=5074)累积的时间最多。