有没有一种简单的方法可以查看程序运行后的最高资源使用情况(CPU、内存甚至带宽)?

有没有一种简单的方法可以查看程序运行后的最高资源使用情况(CPU、内存甚至带宽)?

我知道我可以用来top查看总体实时 CPU 和内存使用情况,
以及nload总体实时带宽使用情况。

但我希望查看程序运行后的最大(或平均)CPU、内存和带宽使用情况。
就像time my_command程序时间花费估算中所做的那样。

在 Linux/Unix 中有一个简单的方法可以做到这一点吗?

答案1

如果系统支持进程记帐,并且启用了记帐,则进程记帐文件中可能有可用的记录,例如在 RedHat Linux 上:

$ grep -q BSD_PROCESS_ACCT=y /boot/config-* && echo hooray
hooray
$ sudo touch /var/log/pacct
$ sudo accton /var/log/pacct
$
...
$ sudo accton   # turn it off

解析acct(5)文件留给读者作为练习。

然而,这是全局的,因此可能不适合新进程创建负载较重的系统。对于每个进程,getrusage(2)调用应该生成 CPU 和内存统计信息,可能通过带有标志的包装器RUSAGE_CHILDREN来报告您感兴趣的子进程。

网络带宽可能更难获得,尤其是在每个进程的基础上。

其他工具,例如 DTrace 或追踪可能也会感兴趣。

相关内容