当它们加起来没有达到 100% 时,如何判断哪个进程占用了我的 CPU?

end*_*ith 9 cpu cpu-usage ubuntu

Ubuntu 的系统监视器小程序持续显示 100% CPU 使用率。如果我单击它,资源选项卡也会连续 100% 显示它。但是,如果我去流程以找出哪个流程是罪魁祸首,则不会超过 10%。如果我跑到顶部,则不会超过 10%。各个过程加起来不等于 100%。我尝试杀死很多进程,但总体使用率仍然是 100%。如何找出占用 CPU 的资源?

替代文字

这是我每天使用的计算机上的一种不寻常情况,除非我正在做一些需要它的事情(例如加载 32 个 Firefox 标签),否则它永远不会接近 100% CPU,之后它会恢复到正常的空闲水平。这不是新安装或任何东西。没有理由应该最大化处理器。我不确定它是什么时候开始的,或者我是否改变了导致它发生的东西。

通常我会使用 top 或 System Monitor 并找到失控的进程,但这次我无法使用这些工具找到任何东西。它在重新启动和一切后仍然存在。

而且处理器显然很热,所以它不是一个错误的读数。

更新:我尝试杀死每个进程,一次一个,直到问题消失,杀死 vino-server 最终修复了它,即使该进程从未超过 5%。几天前我启用了远程桌面(显然现在已经禁用了它)。

但问题仍然存在:单个进程如何设法使用 100% CPU 而 top 仅显示该进程为 5%?以后我如何识别此类罪魁祸首?

看起来我不是唯一遇到这个问题的人:

在快活和业力方面仍然是一个问题。有趣的是,系统监视器和 htop 都没有显示单个进程的总和接近 100% cpu。

Dav*_*ett 9

当您说“没有超过 10%”时,您的意思是“没有超过 10%”吗?总共只需要 11 件事,大约 9% 就可以达到 100%。

此外,一些测量的 CPU 使用时间可能是 I/O 等待时间 - 进程可能正在做某事但不是因为它正在等待 I/O 设备响应的时间(即它已发出磁盘请求并且磁盘尚未找到正确的数据位并返回它)。在顶部,这可以在 CPU 线路上看到作为 %wa 度量。I/O 等待状态有点奇怪 - CPU 实际上并不忙于做任何事情(所以如果另一个进程想要做一些计算,它可以)但它确实计入系统负载数字,因为系统负载代表更多不仅仅是 CPU 活动。

将 的输出添加top -n 1到您的问题会很有帮助。

此外,如果您的内核足够新以具有 IO 记帐功能(如果您使用的是最新版本的 Ubuntu,它应该是)并且它已打开,您可以通过运行iotop -n 1 -ob(iotop默认情况下可能不会安装,如果您没有安装,请尝试安装apt-get install iotop或在 GUI 包管理器中找到它。

  • +1 要求将“top -n 1”添加到问题中 (2认同)