time
特定のコマンドにかかるCPU時間を把握したい場合は、すばらしいコマンドです。
プログラムとすべての子のディスクI / Oを測定できる類似のものを探しています。できれば、キャッシュされた(したがって、ディスクをスピンさせなかった)I / OとキャッシュされなかったI / Oを区別する必要があります。
だから私はやりたい:
iomeassure my_program my_args
次のような出力を取得します。
Cached read: 10233303 Bytes
Cached write: 33303 Bytes # This was probably a tmp file that was erased before making it to the disk
Non-cached read: 200002020 Bytes
Non-cached write: 202020 Bytes
私は、、およびを見てきましたがvmstat
、これらのいずれも単一のプロセスを見ていません。代わりに、システム全体を見ます。iostat
sar
私はを見てきましたがiotop
、それはこの瞬間に私にビューを与えるだけです。
---編集---
スナップの答えは近いようです。
「ファイルシステム入力:」は、512バイトブロックの非キャッシュ読み取りです。
「ファイルシステム出力:」は、512バイトブロックのキャッシュされた書き込みです。
次の方法でキャッシュを強制的に空にできます。
sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
私はテストしました:
seq 10000000 > seq
/usr/bin/time -v bash -c 'perl -e "open(G,\">f\"); print G <>;close G; unlink \"f\";" seq'