当它们加起来不至于 100% 时,如何判断哪个进程占用了我的 CPU?

当它们加起来不至于 100% 时,如何判断哪个进程占用了我的 CPU?

Ubuntu 的系统监视器小程序持续显示 100% 的 CPU 使用率。如果我单击它,资源选项卡也会持续显示 100%。但是,如果我转到进程以找出哪个进程是罪魁祸首,则没有任何进程超过 10%。如果我运行 top,则没有任何进程超过 10%。各个进程加起来不等于 100%。我尝试终止许多进程,但总体使用率仍然是 100%。我如何才能找出是什么占用了 CPU?

替代文本

这是我每天使用的电脑上不常见的情况,除非我执行某些需要 CPU 的操作(例如加载 32 个 Firefox 标签),否则 CPU 永远不会接近 100%,之后它会恢复到正常的空闲水平。这不是新安装或其他原因。处理器没有理由达到最大限度。我不确定它是什么时候开始的,或者我是否更改了导致这种情况发生的某些内容。

通常我会使用 top 或系统监视器来查找失控的进程,但这次我使用这些工具找不到任何东西。重启后它仍然存在。

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

更新:我试图杀人每一个每次运行一个进程,直到问题消失,最后关闭 vino-server 才终于解决了问题,尽管该进程从未超过 5%。几天前我启用了远程桌面(现在显然已经禁用了它)。

但问题仍然存在:为什么单个进程占用了 100% 的 CPU,而 top 只显示该进程占用了 5%?我以后该如何识别这样的罪魁祸首?

看来我不是唯一一个谁遇到过这个问题:

jaunty 和 karmic 中仍然存在问题。有趣的是,系统监视器和 htop 都没有显示各个进程的总 CPU 使用率接近 100%。

答案1

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

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

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

此外,如果您的内核足够新,具有 IO 统计功能(如果您使用的是最新版本的 Ubuntu,它应该有)并且已打开,您可以通过运行查看哪些进程正在积极执行 I/O 操作iotop -n 1 -ob(iotop 可能未默认安装,如果您没有安装,请尝试使用安装apt-get install iotop或在 GUI 包管理器中找到它。

答案2

我遇到了类似的问题。处理器满负荷运转,系统监视器中没有任何进程显示任何内容。我在终端窗口中使用“top”命令找到了一个答案。它显示 apt 毫无理由地占用了我的 CPU。那么为什么系统管理器没有显示这个?原来在“查看所有进程”下有一个选项;我的进程被选中为“我的进程”,所以我从未看到罪魁祸首。希望这能有所帮助。

答案3

我也遇到了同样的问题,但我发现 Xorg 占用了 50% 的 CPU,而这表明可以使用命令修复 [这个错误] sudo rmmod ums_realtek。这次 Xorg 在系统监视器中仅使用了大约 5-10% 的 CPU,但在资源选项卡中它仍然显示 100%。

当我监控系统监视器时,我看到 root 进程的闪烁,占用了 100% 的 CPU!我没有时间查看它是什么,但我确信这与它有关。

答案4

  1. apt-get install cpufrequtils
  2. 打开/etc/rc.conf
  3. 将以下内容添加到模块中:MODULES=(#your-modules-don't-touch#acpi-cpufreq cpufreq_ondemand cpufreq_performance)
  4. 重启

重新启动后,您应该运行cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors以查看已加载哪些模块。

在工作过程中,您可以根据需要更改调速器。例如:

  • cpufreq-set -r -g ondemand

您可以使用以下调节器之一:

  • 表现:它以最大时钟运行 CPU(模块cpufreq_performance:)
  • 一经请求:根据系统负载动态切换 CPU 可用时钟速度(模块cpufreq_ondemand:)
  • 保守的:与 类似ondemand,但 CPU 时钟速度在所有可用频率之间逐渐切换(基于系统负载)(模块:cpufreq_conservative
  • 节能:CPU 以最低速度运行(模块cpufreq_powersave:)
  • 用户空间:允许用户手动设置 CPU 时钟速度。(模块cpufreq_userspace:)

如果您正在使用 GNOME2,那么有一个小程序,非常棒。

  1. 右键单击面板
  2. 添加小程序
  3. 开始输入:CPU,你应该能够看到它:)
  4. 点击Add

通过使用此小程序,您可以在可用的调节器(您/etc/rc.conf之前将它们添加到其中)之间切换。

例如,我一直在使用ondemand,因为我不需要全性能来在我的 ArchLinux 上运行 eclipse 和 Android 模拟器 :P

总结 - 在 Google 上搜索 cpufrequtils 并学习如何使用它 :) pckg 节省了我的时间和金钱 ;D

干杯!

相关内容