Linuxディスクキャッシュ(ページキャッシュ)ファイルデータをキャッシュし、できるだけ多くのRAMを使用するために使用されます。。サーバーのRAMをアップグレードした後、ディスクが許可するよりも早く大容量ファイルをダウンロードしていました。ただし、ファイルが以前に一度ダウンロードされた場合にのみ当てはまります。これは私にとって絶対に論理的です。
2番目のダウンロード(キャッシュから部分のみダウンロードしますか?):
しかし、これが私のバッファサイズより大きいか大きいファイルを使用すると、より頻繁にアクセスするキャッシュファイルをすべて上書きすることになりますか?それとも、大容量ファイルにアクセスできなくなった後に「人気のある」ファイルを「再クロール」できるインテリジェントなメカニズムはありますか?
ベストアンサー1
しかし、これが私のバッファサイズより大きいか大きいファイルを使用すると、より頻繁にアクセスするキャッシュファイルをすべて上書きすることになりますか?
いいえ、キャッシュはそれよりスマートです。ページキャッシュのページは、非アクティブリストとアクティブリストの2つのリストで追跡されます。ページが失敗した場合(つまり、ディスクからデータを読み取る)最初は非アクティブリストに追加され、再びアクセスするとアクティブリストに昇格されます。ページは非アクティブリストからのみ削除されます。
具体的には、一度読み取った大きなファイルが、複数回使用された小さなファイルを削除しないことを意味します。
これはまた、現在見ている動作を説明します。大容量ファイルを初めてダウンロードするとキャッシュに読み込まれますが、Web サーバーがファイルを処理するにつれて徐々に削除されます。したがって、2番目のダウンロードはキャッシュから開始されませんが、最終的にキャッシュに残っているページに追いつきます。 2番目のダウンロードを実行すると、そのページがキャッシュに残るのに適しており、3番目のダウンロードはキャッシュのすべてのコンテンツを検索します。
この方法の詳細な手順を見つけることができます。カーネルソースコードから。
それとも、大容量ファイルにアクセスできなくなった後に「人気のある」ファイルを「再クロール」できるインテリジェントなメカニズムはありますか?
ただし、これはカーネルが使用するスマートなメカニズムです。いいえ(同様の例は、システムが静かなときにカーネルが未使用のページをスワップするために移動するという継続的なアイデアですが、これは本当ではありません。)カーネルは将来をあまり予測しようとしません。この「規則」の1つの例外は、ブロックデバイスで先読みを実行するが、それ以上は実行しないことである。