web-dev-qa-db-ja.com

プロセスの合計I / Oコスト

iotopを使用すると、任意またはすべてのプロセスで使用されるディスク帯域幅をリアルタイムで測定できることがわかります。 iotop -aは、累積したディスク帯域幅を測定します。

ただし、実行中のプロセスが終了すると、iotopですぐに消えてしまい、プロセスの開始以降にプロセスが使用したI/Oの数を正確に確認できません。プロセスの終了時にプロセスの合計I/O使用状況を記録する方法はありますか?さらに分析するために、これをファイルに保存している可能性がありますか?

Linux、特にUbuntuに限定して回答を探していることに注意してください。

17
user308485

pidstat を試してください。次のように使用します:pidstat -d -e command

pidstatは、Linuxタスクの統計情報を報告できます。 -dは、pidstatにIO stats。__stat_variable_name__を収集するように指示します。pidstatは、コマンドが完了するとレポートを停止して印刷します。

19
Henrik Pingel

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出力をログファイルに保存する場合は、fgrepddの順序を逆にすることもできます)

1
Matija Nalis