【问题标题】:How to monitor a process in Linux CPU, Memory and time如何在 Linux 中监控一个进程的 CPU、内存和时间
【发布时间】:2013-06-02 15:15:53
【问题描述】:

如何在 Linux 中对进程进行基准测试?我需要将“top”和“time”之类的东西放在一个特定的进程名称(它是一个多进程程序,所以会给出很多 PID)?

此外,我想绘制这些进程的内存和 cpu 使用情况,而不仅仅是最终数字。

有什么想法吗?

【问题讨论】:

    标签: linux memory process monitoring cpu


    【解决方案1】:

    我通常会为这类工作编写一个简单的脚本。

    查看 proc 文件系统的内核文档(Google 'linux proc.txt')。

    /proc/stat 的第一行(proc.txt 中的第 1.8 节)将为您提供累积的 cpu 使用统计信息(即 user、nice、system、idle ......)。对于每个进程,/proc/$PID/stat 文件(proc.txt 中的表 1-4)将为您提供特定于进程的 cpu 使用情况统计信息和内存使用情况统计信息(参见 rss)。

    如果您稍微搜索一下,您会发现有关这些文件的大量详细信息,以及可以帮助您获得/派生所需值的库/应用程序/代码 sn-ps 的指针。考虑到这一点,我将专注于高层战略。

    对于 CPU 统计信息,使用您最喜欢的脚本语言创建一个可执行文件,该可执行文件采用一组进程 ID 进行监控。以固定的时间间隔(例如:1 秒)轮询/计算每个进程和整个系统的累积总数。在每个轮询间隔期间,将单行上的所有结果写入标准输出。

    对于内存统计,编写一个类似的脚本,但只需记录每个进程的内存使用情况。由于我们直接获取瞬时值,因此记忆更容易。

    在测试期间运行这些脚本,传递您想要监控的一组进程 ID,并将其输出重定向到日志文件。

    ./logcpu $(pidof foo) $(pidof bar) > cpustats
    ./logmem $(pidof foo) $(pidof bar) > memstats
    

    将这些文件的内容导入电子表格(对于某些应用程序,这就像复制/粘贴一样简单)。对于 CPU,您需要瞬时值但具有累积值,因此您需要做一些小的电子表格工作来导出这些值(它只是 delta 't(x + 1) - t(x)')。当然,您可以让您的 cpu 记录器编写增量,但您会在脚本上花费更多时间。

    最后,使用您的电子表格生成漂亮的绘图。

    【讨论】:

    • 很高兴看到 /proc/$PID 包含所有这些监控数据
    【解决方案2】:

    以下是监控 linux 系统的工具

    1. 诸如topfree -mvmstatiostatiotopsarnetstat 等系统命令在调试问题时不会靠近这些 linux 实用程序。这些命令可以让您清楚地了解服务器内部的情况
    2. SeaLion:代理执行#1 中提到的所有命令(也是用户定义的),并且可以在漂亮的 Web 界面中访问这些命令的输出。当您在数百台服务器上进行调试时,此工具会派上用场,因为安装非常简单。而且它是免费的
    3. Nagios:它是所有监控/警报工具之母。这是非常定制的,但对于初学者来说很难设置。有一组称为 nagios 插件的工具涵盖了几乎所有重要的 Linux 指标
    4. 穆宁
    5. Server Density:一种基于云的付费服务,它收集重要的 Linux 指标并让用户能够编写自己的插件。
    6. New Relic:另一个众所周知的托管监控服务。
    7. 扎比克斯

    【讨论】:

    • MMonit 这是必须的。单监视器免费,集群 MMonit 付费。
    猜你喜欢
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2016-02-19
    • 2020-09-30
    • 2018-11-08
    • 1970-01-01
    相关资源
    最近更新 更多