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

Ped*_*dro 8 linux memory cpu monitoring process

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

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

有任何想法吗?

小智 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).

如果你稍微谷歌,你会发现有关这些文件的大量详细信息,以及指向库/应用程序/代码片段的指针,可以帮助您获取/获得所需的值.考虑到这一点,我将专注于高层战略.

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

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

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

./logcpu $(pidof foo) $(pidof bar) > cpustats
./logmem $(pidof foo) $(pidof bar) > memstats
Run Code Online (Sandbox Code Playgroud)

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

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


小智 7

以下是监控Linux系统的工具

  1. 系统命令一样top,free -m,vmstat,iostat,iotop,sar,netstat,等没有来到附近这些Linux工具,当你正在调试一个问题.这些命令可以让您清晰地了解服务器内部的情况
  2. SeaLion:Agent执行#1中提到的所有命令(也是用户定义的),并且可以在漂亮的Web界面中访问这些命令的输出.当您在数百台服务器上进行调试时,此工具非常方便,因为安装非常简单.它是免费的
  3. Nagios:它是所有监控/警报工具的母亲.这是非常多的定制,但很难为初学者设置.有许多称为nagios插件的工具,涵盖了几乎所有重要的Linux指标
  4. 穆宁
  5. 服务器密度:基于云的付费服务,可收集重要的Linux指标并为用户提供编写自己的插件的能力.
  6. New Relic:另一个众所周知的托管监控服务.
  7. ZABBIX