プログラムを実行した後、プログラムの最高リソース使用量(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または興味があるかもしれません。

関連情報