gpt4 book ai didi

linux - 如何在 Linux 中监控一个进程的 CPU、内存和时间

转载 作者:IT王子 更新时间:2023-10-28 23:35:09 25 4
gpt4 key购买 nike

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

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

有什么想法吗?

最佳答案

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

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

/proc/stat 的第一行(proc.txt 中的第 1.8 节)将为您提供累积的 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 - 如何在 Linux 中监控一个进程的 CPU、内存和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16965048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com