
常にI/Oが多いため、キャッシュが多くないクライアントサイトをシミュレートしたいと思います。私のマシン(正確には私の仮想マシン)でSQLクエリと同じ制限を適用してSQLクエリを実行したいので、実行する前にキャッシュを毎回フラッシュする必要があるようです。
postgres SQLでキャッシュをフラッシュする必要があります(明らかに再起動すると可能です)。また、VM(コードが実行されている場所)とVMが実行されているホストの両方でOSキャッシュをフラッシュして、VM全体が最適化されていないことを確認する必要があります。私の目標は、完全に最適化されていない方法でクエリを実行できることです(何らかのキャッシュもなく、OSもなく、postgresもなく、何もありません)。
だから私はVMとホストコンピュータで次のコマンドを実行しました(フォーラムで見つけました)。
sync;
echo 1 > /proc/sys/vm/drop_caches;
echo 2 > /proc/sys/vm/drop_caches;
echo 3 > /proc/sys/vm/drop_caches;
これは適切だと思いますか?これほど十分だと思いますか?それともまったく異なる方法を使用する必要がありますか?
私はRed Hat 6.2を実行しています。
答え1
最初は、とコマンドをecho 3 > /proc/sys/vm/drop_caches
組み合わせるので十分です。そうでなければそうです。キャッシュを消去するのに適しています。echo 1
echo 2
http://linux-mm.org/Drop_Caches
これらのコマンドは既存のキャッシュのみを削除します。たとえば、コールドスタート環境を作成しますが、最初のクエリを実行した後にキャッシュが使用されます。また、postgres設定を最適化解除しますshared_buffers
。
VMに使用する場合は、kvm
ディスク用のブロックデバイスを使用し、キャッシュなしでvirtioを使用します。http://www.linux-kvm.org/page/Tuning_KVM