1

コマンドsarにdentunusdという項目があります。意味: ディレクトリ キャッシュ内の未使用のキャッシュ エントリの数。

私は知りたいです:

  • キャッシュエントリーとは?
  • ディレクトリキャッシュとは何ですか?
  • 彼らはどこにいる?

資料を提供してくれる人はいますか?

4

1 に答える 1

3

から、http://www.tldp.org/LDP/tlk/fs/filesystem.html

9.2.9 ディレクトリキャッシュ

よく使用されるディレクトリへのアクセスを高速化するために、VFS はディレクトリ エントリのキャッシュを維持します。

ディレクトリが実際のファイル システムによって検索されると、その詳細がディレクトリ キャッシュに追加されます。次に同じディレクトリが検索されると、たとえば、ディレクトリを一覧表示したり、その中のファイルを開いたりするときに、ディレクトリ キャッシュで検出されます。短いディレクトリ エントリ (最大 15 文字) のみがキャッシュされますが、短いディレクトリ名が最も一般的に使用されるため、これは合理的です。たとえば、/usr/X11R6/bin は、X サーバーの実行中に頻繁にアクセスされます。

ディレクトリ キャッシュはハッシュ テーブルで構成され、各エントリは同じハッシュ値を持つディレクトリ キャッシュ エントリのリストを指します。ハッシュ関数は、ファイル システムを保持しているデバイスのデバイス番号とディレクトリの名前を使用して、ハッシュ テーブルへのオフセットまたはインデックスを計算します。これにより、キャッシュされたディレクトリ エントリをすばやく見つけることができます。キャッシュ内のルックアップでエントリを見つけるのに時間がかかりすぎる場合、またはエントリが見つからない場合でも、キャッシュを使用しても意味がありません。

キャッシュを有効かつ最新の状態に保つために、VFS は LRU (Least Recent Used) ディレクトリ キャッシュ エントリのリストを保持します。ディレクトリエントリが最初にキャッシュに入れられるとき、つまり最初に検索されるときに、最初のレベルの LRU リストの最後に追加されます。フル キャッシュでは、これにより LRU リストの先頭から既存のエントリが置き換えられます。ディレクトリ エントリが再度アクセスされると、2 番目の LRU キャッシュ リストの後ろに昇格されます。繰り返しになりますが、これにより、レベル 2 LRU キャッシュ リストの先頭にあるキャッシュされたレベル 2 ディレクトリ エントリが置き換えられる場合があります。レベル 1 およびレベル 2 の LRU リストの先頭にあるこのエントリの置き換えは問題ありません。エントリがリストの先頭にある唯一の理由は、それらが最近アクセスされていないことです。もしそうなら、彼らはリストの一番後ろにいるでしょう。第 2 レベルの LRU キャッシュ リストのエントリは、レベル 1 の LRU キャッシュ リストのエントリよりも安全です。これらのエントリは検索されただけでなく、繰り返し参照されているため、これが意図されています。

于 2014-02-24T15:36:47.353 に答える