如何在Linux CPU,内存和时间中监视进程

时间:2013-06-06 14:40:07

标签: linux memory process monitoring cpu

如何在Linux中对流程进行基准测试?对于特定的进程名称,我需要将“top”和“time”放在一起(这是一个多进程程序,会给出很多PID)?

此外,我希望有一个关于这些进程的内存和CPU使用时间的图,而不仅仅是最终数字。

有什么想法吗?

2 个答案:

答案 0 :(得分:13)

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

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

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

如果您稍微google一下,您会发现有关这些文件的大量详细信息,以及指向图书馆/应用/代码段的指针,可帮助您获取/获取所需的值。考虑到这一点,我将专注于高层战略。

对于CPU统计信息,请使用您喜欢的脚本语言来创建一个可执行文件,该文件可以使用一组进程ID进行监视。以固定间隔(例如:1秒)轮询/计算每个过程和整个系统的累计总数。在每个轮询间隔期间,将所有结果写在一行到stdout。

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

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

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

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

最后,使用您的电子表格生成一个漂亮的情节。

答案 1 :(得分:7)

以下是监控Linux系统的工具

  1. 系统命令,例如topfree -mvmstatiostatiotopsarnetstat等。在调试问题时,这些linux实用程序附近没有任何内容。这些命令可以为您提供服务器内部的清晰图片
  2. SeaLion:代理执行#1中提到的所有命令(也是用户定义的),并且可以在漂亮的Web界面中访问这些命令的输出。当您在数百台服务器上进行调试时,此工具非常方便,因为安装非常简单。它的免费
  3. Nagios:它是所有监控/警报工具的母亲。这是非常多的定制,但很难为初学者设置。有许多称为nagios插件的工具,涵盖了几乎所有重要的Linux指标
  4. 穆宁
  5. Server Density:基于云的付费服务,可收集重要的Linux指标,并为用户提供编写自己的插件的能力。
  6. New Relic:另一个众所周知的托管监控服务。
  7. 的zabbix