如何在Linux中对流程进行基准测试?对于特定的进程名称,我需要将“top”和“time”放在一起(这是一个多进程程序,会给出很多PID)?
此外,我希望有一个关于这些进程的内存和CPU使用时间的图,而不仅仅是最终数字。
有什么想法吗?
答案 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系统的工具
top
,free -m
,vmstat
,iostat
,iotop
,sar
,netstat
等。在调试问题时,这些linux实用程序附近没有任何内容。这些命令可以为您提供服务器内部的清晰图片