iotop
を使用すると、任意またはすべてのプロセスで使用されるディスク帯域幅をリアルタイムで測定できることがわかります。 iotop -a
は、累積したディスク帯域幅を測定します。
ただし、実行中のプロセスが終了すると、iotopですぐに消えてしまい、プロセスの開始以降にプロセスが使用したI/Oの数を正確に確認できません。プロセスの終了時にプロセスの合計I/O使用状況を記録する方法はありますか?さらに分析するために、これをファイルに保存している可能性がありますか?
Linux、特にUbuntuに限定して回答を探していることに注意してください。
pidstat を試してください。次のように使用します:pidstat -d -e command
pidstat
は、Linuxタスクの統計情報を報告できます。 -d
は、pidstat
にIO stats。__stat_variable_name__を収集するように指示します。pidstat
は、コマンドが完了するとレポートを停止して印刷します。
iotop
には_--batch
_オプションがあり、非インタラクティブに処理するために使用できます。それはあなたがすることを可能にします(例えば):
_Sudo iotop --batch -qqq --accumulated | fgrep --line-buffered '% dd ' | tee ~/dd.log
_
これは次のような出力を提供します:
_19804 be/4 user 0.00 B 0.00 B 0.00 % 0.00 % dd if=/dev/zero of=/tmp/log.1 bs=1M count=10000
19804 be/4 user 0.00 B 755.18 M 0.00 % 30.99 % dd if=/dev/zero of=/tmp/log.1 bs=1M count=10000
19804 be/4 user 0.00 B 1029.48 M 0.00 % 50.96 % dd if=/dev/zero of=/tmp/log.1 bs=1M count=10000
_
fgrep(1)
文字列に一致する最後の行(この例ではdd
コマンドを探しています)が最終的な累積行です。
また、後で必要に応じて解析するために、出力は_~/dd.log
_に残ります。 (例では、tee
に固有の出力だけでなく、すべてのiotop出力をログファイルに保存する場合は、fgrep
とdd
の順序を逆にすることもできます)