web-dev-qa-db-ja.com

Linuxでfilesytemのキャッシュを完全にクリアする方法は?

パフォーマンステストでは、Linuxシステムのキャッシュ(ページキャッシュ/ iノードキャッシュなどを含む)の影響を回避したいと思います。

O_DIRECTフラグを試しましたが、ダイレクトI/Oはまだキャッシュの効果を「楽しんで」いることがわかりました。

システムキャッシュの効果を閉じるための完全な方法はありますか?

9
tom_cat

(実際にはドロップします。)最初にsyncを実行し、次に

無料のページキャッシュ:

echo 1 > /proc/sys/vm/drop_caches

無料のdentriesとinode:

echo 2 > /proc/sys/vm/drop_caches

無料のページキャッシュ、デントリー、iノード:

echo 3 > /proc/sys/vm/drop_caches

次に、クリーンキャッシュから始めることができますが、もちろんキャッシュは引き続き機能します。

14
Karoly Horvath

いいえ、キャッシュをバイパスすることはできません。ただし、追加のシステムコールfsync(3)を使用して、ファイルシステムの同期を強制する(つまり、キャッシュをクリアしてデータをディスクに書き込む)ことができます。

ご挨拶、CK

0
ckruse