私はこれを使用して、フル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または道興味があるかもしれません。