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


9

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

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

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


2
そのような「非現実的な」性能テストの要点は何ですか?あなたは、現代のOSが決して起こりそうにないものをテストしようとしています。

残念ながら、それはまったく非現実的ではありません。それは、現在でもカーネルaioが機能する方法です。私は、T氏が非同期I / Oとキャッシュが相互に排他的な用語ではないことを認識してくれることを願っています。これは、15年前にMicrosoftの担当者が既に実現していることです(ただし、Vistaより前のパフォーマンスは、特に同時実行のもとでは、失望する可能性があります)。何人かのインド人も何年も前にパッチを書いたが断られた。

回答:


14

(実際には低下します。)sync最初に実行し、次に

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

echo 1 > /proc/sys/vm/drop_caches

無料のエントリとiノード:

echo 2 > /proc/sys/vm/drop_caches

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

echo 3 > /proc/sys/vm/drop_caches

その後、クリーンなキャッシュから開始できますが、もちろんキャッシュは引き続き機能します。


この方法についてはどこかで聞いたことがあります。しかし、ubuntu 10.04にはそのようなファイルはありません。上記のコマンドを実行できませんでした。

@tom_cat:2.6.16以降のカーネルが必要です。Ubuntu10.04には2.6.32が付属しているので、間違いがないので、これでうまくいくはずです。11.04のインストールをチェックして、その価値があるかどうかを確認しました。このprocエントリが含まれています(残念ながら、ここには10.04はもうありません)

@Damon:ええ、あなたは正しいです。本当にありがとう。古いカーネルのリモートマシンにログオンしていたことがわかりました。

0

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

あいさつ、CK

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.