9

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

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

有任何想法吗?

4

2 回答 2

12

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

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

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

如果你用谷歌搜索一下,你会发现很多关于这些文件的详细信息,以及指向库/应用程序/代码片段的指针,它们可以帮助你获得/导出你需要的值。考虑到这一点,我将专注于高层战略。

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

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

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

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

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

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

于 2013-06-06T18:43:19.827 回答
7

以下是监控 linux 系统的工具

  1. 系统命令,如top, free -m, vmstat, iostat, iotop, sar,netstat等。当您调试问题时,这些 linux 实用程序附近没有任何东西。这些命令为您提供了服务器内部的清晰图片
  2. SeaLion:代理执行#1 中提到的所有命令(也是用户定义的),并且可以在漂亮的 Web 界面中访问这些命令的输出。当您在数百台服务器上进行调试时,此工具会派上用场,因为安装非常简单。而且它是免费的
  3. Nagios:它是所有监控/警报工具之母。这是非常定制的,但对于初学者来说很难设置。有一组称为 nagios 插件的工具,涵盖了几乎所有重要的 Linux 指标
  4. 穆宁
  5. 服务器密度:一种基于云的付费服务,它收集重要的 Linux 指标并让用户能够编写自己的插件。
  6. New Relic:另一个众所周知的托管监控服务。
  7. 扎比克斯
于 2013-11-20T07:24:08.543 回答