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

Zen*_*Zen 2 cpu memory monitoring bandwidth

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

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

在 Linux/Unix 中是否有一种简单的方法可以做到这一点?

thr*_*rig 5

如果系统支持进程记帐,并且启用了记帐,那么进程记帐文件中可能会有可用的记录,例如在 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

其他工具,例如 DTrace 或Ftrace,也可能是您感兴趣的。