我如何阅读 htop

Luk*_*ett 9 linux htop

我无法理解htopLinux top 命令的流行替代品所显示的信息。

htop 屏幕转储

在上面的屏幕截图中,列出了许多 java 实例,但只有父实例使用 CPU 时间。其他人是什么?

当 CPU% 列显示所有进程没有发生太多事情时,为什么 CPU 利用率条显示如此繁忙的内核?事实上,它们大部分时间都没有相关性地移动。

当核心几乎总是绿色并且看起来很忙时,为什么右上的负载平均值(我假设它是一个 3 步历史)如此之低?

有人会这么好心解释如何阅读这些信息吗?

谢谢!

Joh*_*Siu 5

  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 或更高。

  2. 关于 Java 行,它们是父进程(PID=5073)和子进程。我无法解释为什么父级积累了最多的 CPU 时间。这真的取决于程序的内部逻辑。但是,根据TIME+,这些子进程确实消耗了cpu时间,最后一个(PID=5074)累积的最多。