プログラムのディスク I/O 使用量の測定

プログラムのディスク I/O 使用量の測定

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、これはすぐに見えるようにしてくれるだけです。

- - 編集する - -

Snapshotの答えは近いようです。

「ファイルシステム入力:」は、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'

ベストアンサー1

使用しているオペレーティングシステムが指定されていません。

Linux

time foo(通常)組み込みシェルを使用する代わりに、外部コマンドを試すことができます/usr/bin/time foo。ファイルシステムの入出力数など、いくつかの追加情報を提供します(ただし、キャッシュヒットやバイト量に関する情報は提供しません)。バラよりman timeそしてman getrusage追加の指示を確認してください。

この機能を使用するには、Linuxカーネルバージョン2.6.22以降が必要です。

FreeBSD

使用/usr/bin/time -l foo。入力と出力の数を提供します。バラよりman timeそしてman getrusage追加の指示を確認してください。

おすすめ記事