我如何确定哪些进程占用了最多的 CPU?

我如何确定哪些进程占用了最多的 CPU?

05:54:17 启动 6 天,9:54,1 个用户,平均负载:15.70、8.04、4.56

平均负载比应有的要高很多。刚才只有一半,我使用 ps aux 查看哪些进程占用了大量 CPU,结果 httpd 占用了大量 CPU。它运行了几个进程,每个进程占用 0.9。所以我重新启动了 httpd,现在这些进程都消失了,但平均负载却翻了一番。

你知道,仔细想想,我可能对平均负载的含义理解错了,我从来没有真正研究过它,只是从一个朋友那里得到了它的定义,他告诉我它是 CPU 消耗,比如有多少进程在等待使用 CPU,所以如果我也能得到一个解释这是什么,以及如何使它回落。

但我真正来这里的问题是:有没有办法可以列出消耗最多 CPU 的进程?

答案1

htop 或者只是 top

答案2

负载是资源争用的一种衡量标准,而不仅仅是 CPU 使用率。如果许多进程处于“等待”状态(例如由于高磁盘 IO 或内存交换),这可能会导致高负载,而实际 CPU 使用率不会出现相应的峰值。top 和 ps 等工具在一定程度上会有所帮助,特别是如果您使用某些选项来自定义输出。对于磁盘和内存利用率,您可以尝试解释 iostat 和 vmstat 的输出,或者安装 iotop 等实用程序

答案3

loadav 仅告诉您有多少个进程正在排队运行;您可能会受到磁盘、网络、NFS、锁争用、交换或一系列其他条件的限制。

我倾向于安装 sar(并使用 -d 选项获取磁盘统计信息)来收集一段时间内的数据并查看发生的情况;这将为您提供有关 CPU、内存配置文件和磁盘行为的合理详细的细分。

一个简单的经验法则是,如果在 vmstat、top、atop、dstat、sar 和此类工具中显示有大量“空闲”时间,则您并没有耗尽 CPU,而是耗尽了其他资源。

您还可以看看 dstat,它有一些不错的插件可以检查应用程序的不当行为。

相关内容