オペレーティングシステムキャッシュなしでクエリを実行する

オペレーティングシステムキャッシュなしでクエリを実行する

常に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 1echo 2http://linux-mm.org/Drop_Caches

これらのコマンドは既存のキャッシュのみを削除します。たとえば、コールドスタート環境を作成しますが、最初のクエリを実行した後にキャッシュが使用されます。また、postgres設定を最適化解除しますshared_buffers

VMに使用する場合は、kvmディスク用のブロックデバイスを使用し、キャッシュなしでvirtioを使用します。http://www.linux-kvm.org/page/Tuning_KVM

おすすめ記事