
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
追加の指示を確認してください。