分析Linux上长时间运行的进程的资源使用情况——CPU、内存、硬盘驱动器?

Posted

技术标签:

【中文标题】分析Linux上长时间运行的进程的资源使用情况——CPU、内存、硬盘驱动器?【英文标题】:Profiling resource usage - CPU, memory, hard-drive - of a long-running process on Linux? 【发布时间】:2015-02-11 18:43:09 【问题描述】:

我们有一个需要大约 20 小时才能在我们的 Linux 机器上运行的过程。我们想让它更快,作为第一步需要识别瓶颈。我们这样做的最佳选择是什么?

我正在考虑每 N 秒对进程的 CPU、RAM 和磁盘使用情况进行一次采样。因此,除非您有其他建议,否则我的具体问题是:

    N 应该是多少? 哪种工具可以提供这些统计数据的准确读数,并且将工具本身正在运行的干扰或干扰降至最低? 任何其他技巧、智慧或对其他有用文档的参考将不胜感激,因为这似乎是这些任务之一,您可能会在其中犯很多耗时的错误和错误的开始作为新手。

【问题讨论】:

试一试this。这不是关于统计数据,而是关于寻找时间的猪。 如果你不知道进程是 CPU 绑定还是 I/O 绑定,可以从最简单的系统监控工具开始,Gregg 推荐:slideshare.net/brendangregg/…Linux Performance Analysis and Tools (SCaLE11x, 2013) - 像 top (CPU 使用率应该接近 thread_count * 100% 对于 CPU-bound 任务) 和 iostat 来检查磁盘活动。您还可以检查顶部的“Cpu(s)”行以检查 %sy - linux 内核 cpu 负载。列出了更多工具,sar,vmstat,mpstat,iostat 将每 N 秒显示一次统计信息。迈克,401k 观看次数超过 242k。 【参考方案1】:

首先,你想要什么和你问什么是完全不同的。

当您第一次运行它时,即当您不知道它的资源利用率(CPU、内存、磁盘等)时,需要进行监控。 您可以按照以下步骤深入了解瓶颈,

    监控系统资源(使用 Munin、ganglia 或其他工具一般 10-20 秒间隔应该没问题)。 在这你应该能够确定你的硬件是否是瓶颈,即你是否耗尽了资源。 100% cpu util、非常低的内存、高 io 等。

如果这是你的情况,那么可能考虑升级硬件或调整现有的。

    然后您调整您的应用程序/实用程序。使用分析器/记录器找出哪个方法、过程需要时间。尝试调整该过程。如果您有单线程代码,那么可能会使用并行性。如果涉及数据库等,请尝试调整您的查询、数据库参数。

然后再次使用监控运行测试以深入了解更多信息:)

【讨论】:

【参考方案2】:

我认为图形表示应该有助于解决您的问题,我建议您 Munin。

这是一个带有网络界面的资源监控工具。默认情况下,它会监控磁盘 IO、内存、cpu、平均负载、网络使用情况……它轻巧且易于安装。开发自己的插件和设置警报阈值也很容易。

http://munin-monitoring.org/

以下是您可以从 Munin 获得的示例:http://demo.munin-monitoring.org/munin-monitoring.org/demo.munin-monitoring.org/

【讨论】:

以上是关于分析Linux上长时间运行的进程的资源使用情况——CPU、内存、硬盘驱动器?的主要内容,如果未能解决你的问题,请参考以下文章

linux下程序分析工具总结

linux下程序分析工具总结

Linux查看系统资源情况

arcgis采样长时间没结果

Linux多久需要重启一次?长时间不重启会出现啥后果?

用于长时间运行代码的 gevent 探查器