如何在 Linux 中对进程进行基准测试?我需要将“top”和“time”之类的东西放在一个特定的进程名称(它是一个多进程程序,所以会给出很多 PID)?
此外,我想绘制这些进程的内存和 cpu 使用时间图,而不仅仅是最终数字。
有任何想法吗?
如何在 Linux 中对进程进行基准测试?我需要将“top”和“time”之类的东西放在一个特定的进程名称(它是一个多进程程序,所以会给出很多 PID)?
此外,我想绘制这些进程的内存和 cpu 使用时间图,而不仅仅是最终数字。
有任何想法吗?
我通常会为这类工作编写一个简单的脚本。
查看 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 记录器编写增量,但您将在脚本上花费更多时间。
最后,使用您的电子表格生成漂亮的绘图。
以下是监控 linux 系统的工具
top
, free -m
, vmstat
, iostat
, iotop
, sar
,netstat
等。当您调试问题时,这些 linux 实用程序附近没有任何东西。这些命令为您提供了服务器内部的清晰图片