これら2つのコマンドの速度を比較したいと思います。
grep pattern1 files*
grep pattern2 files*
残念ながら、最初のgrepは多くのファイル*をメモリバッファーに読み込みます。そのため、2番目のgrepは非常に高速に実行されますが、理由は間違っています。
Linux(Fedora 11)にどのように伝えますか:「何かをテストしているので、ディスク読み取りのキャッシュを停止してください。」
これら2つのコマンドの速度を比較したいと思います。
grep pattern1 files*
grep pattern2 files*
残念ながら、最初のgrepは多くのファイル*をメモリバッファーに読み込みます。そのため、2番目のgrepは非常に高速に実行されますが、理由は間違っています。
Linux(Fedora 11)にどのように伝えますか:「何かをテストしているので、ディスク読み取りのキャッシュを停止してください。」
回答:
「一時的にキャッシングを停止する」とは簡単に言えないと思います。しかし、実行できることは、実行する前にキャッシュを削除するようにシステムに指示することです。
ルートとして:
sync; echo 3 > /proc/sys/vm/drop_caches
(これは、Documentation / sysctl / vm.txtのカーネルドキュメントに記載されています。これは、私たちの一部のように、値1、2、または3が何をするのかを常に覚えておくことができない場合に便利です。)
あるいは、もちろん、キャッシュを準備して、キャッシュされたパフォーマンスを比較します。(どちらも便利な数字だと思います。)
echo 1
ページキャッシュのみを削除し、ディスクキャッシュは削除しません。
このようなものをタイミングするとき、私は通常、最初にそれを実行してキャッシュを準備します。次に、時間を使用してコマンドを実行します。このようなものをテストする場合は、CPUと経過時間についてはもっと気にする必要があり、I / O時間については気にする必要がありません。
いずれにしても、完全に正確なタイミングを取得することは困難です。入力ファイルがバッファに使用可能なメモリのサイズを超えると、バッファキャッシュを介してすべてのファイルが循環することになります。それ以外の場合は、バッファキャッシュからすべてのデータにアクセスできます。実際には、バッファリングされたデータとディスクから読み取られたデータが混在していることがよくあります。