![`top` 给出的 CPU 百分比与进程 CPU 使用率总计之间的差异](https://linux22.com/image/1252528/%60top%60%20%E7%BB%99%E5%87%BA%E7%9A%84%20CPU%20%E7%99%BE%E5%88%86%E6%AF%94%E4%B8%8E%E8%BF%9B%E7%A8%8B%20CPU%20%E4%BD%BF%E7%94%A8%E7%8E%87%E6%80%BB%E8%AE%A1%E4%B9%8B%E9%97%B4%E7%9A%84%E5%B7%AE%E5%BC%82.png)
我注意到,报告的总 CPU 使用率与和等应用程序给出的每个进程 CPU 使用率总和之间有时会存在(很大)top
差异wmtop
。
举个例子:我最近git filter-branch --index-filter
在一个相当大的仓库上运行了,使用 index-filter 命令git ls-files
通过grep
过滤器进入xargs git rm --cached
。这需要几分钟才能运行;在运行过程中,我注意到和都wmtop
显示top
高(在我的 2 核机器上超过 50%)总 CPU 使用率,但都没有显示任何使用大量 CPU 时间的单个进程。
进程列表中是否未显示某些进程?这些进程是什么类型的进程?有没有办法找出它们使用了多少 CPU 时间?
答案1
tops
您应该在问题中添加输出快照,以便我们能够准确地看到您所看到的内容。
处理器使用指标中最常见的差异是一些计算“I/O 等待”时间以及“实际 CPU 繁忙”时间。I/O 等待时间是指进程会正在积极地做某事,因此可能已经使用了调度程序赋予它的所有时间片,但由于等待 I/O 操作完成而被阻止。
短时间运行的进程也会产生影响:如果有许多进程启动、执行一些小任务然后关闭,top 或类似程序可能根本看不到它们(特别是如果您不经常更新 top),因为它们执行完任务后会在更新之间停止。即使 top 采样时它们不存在(因此不会出现在任务列表中),文件系统中的总体计数/proc
仍会显示自上次采样以来 CPU 在 X 个调度程序滴答中处于繁忙状态,在 Y 个调度程序滴答中处于空闲状态。