通过运行top、htop、uptime等,我们可以看到平均负载为三个值,分别表示最近1/5/15分钟的平均负载(好吧,不是真的,但这不是这里的问题)。
有时我会注意到过去 15 分钟的平均负载相当高,但当前负载却很低。是否有实用程序/程序可以列出过去 1/5/15 分钟(或其他类似时间段)消耗最多 CPU 时间的进程(即使它们不再存在)?
我知道平均负载也可能是由等待 I/O 的进程引起的,但我最感兴趣的是查看最耗 CPU 的应用程序(尽管能够查看历史 I/O 也很好)。
据我所知,运行 htop 并按时间排序对我没有帮助,因为如果计算机已经打开了一段时间,最高值不一定与最近的过去有任何关系。
答案1
我建议使用atop
.它是一个守护进程,默认情况下每 10 分钟收集一次所有“热门”信息,您可以及时返回查看这些“热门”快照。根据您的需要调整默认间隔设置(如果设置得更频繁,会消耗更多磁盘空间)。
就在昨天,我回答过类似的问题,其中我包含了一个非常简短的操作方法。
答案2
答案3
除非您设置了数据收集工具,否则答案是否定的,没有这样的内置实用程序可以记录不同资源的使用情况。
另一方面,每个 Linux 安装都附带 sar 实用程序,它可以解决您正在讨论的主题。我不会详细介绍如何收集数据以及如何提取这些数据以进行报告,因为每个服务器和每个组织的需求都是不同的。
登录到您的服务器并开始阅读sar
命令的手册页。然后用 google 搜索一下如何有效地使用 sar。在很短的时间内,您将能够设置您的数据收集实用程序。当你遇到问题时,你只需回溯指定时间段的 sar 日志,找出哪个资源的利用率恰好高于平时,等等。
如果您的利用率持续达到 75% 或更高,并且没有其他方法可以向他们证明,那么它是说服管理层投资一些资金购买/升级硬件的宝贵工具。如果我没记错的话,甚至还有 Excel 宏可以根据原始 SAR 数据制作图形(读作管理用语)报告。