パフォーマンステストでは、Linuxシステムのキャッシュ(ページキャッシュ/ iノードキャッシュなどを含む)の影響を回避したいと思います。
O_DIRECTフラグを試しましたが、ダイレクトI/Oはまだキャッシュの効果を「楽しんで」いることがわかりました。
システムキャッシュの効果を閉じるための完全な方法はありますか?
(実際にはドロップします。)最初に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
次に、クリーンキャッシュから始めることができますが、もちろんキャッシュは引き続き機能します。
いいえ、キャッシュをバイパスすることはできません。ただし、追加のシステムコールfsync(3)を使用して、ファイルシステムの同期を強制する(つまり、キャッシュをクリアしてデータをディスクに書き込む)ことができます。
ご挨拶、CK