すべての dentries は inode オブジェクトへのポインタを持っているので混乱しています。私が知っている限り、常にディレクトリエントリを介してinodeを探します。それでは、なぜinodeキャッシュがあるのですか?
答え1
ディレクトリエントリとinodeは異なるオブジェクトなので、別々のキャッシュを持ちます。 dentry キャッシュが配置されます。dcache.c
, inode は次にキャッシュされます。inode_hashtable
存在するinode.c
。ただし、inodeキャッシュはdcacheに依存します。
dcacheはicacheのマスターです。 inode は、dcache エントリが存在する限り常に存在します。
すでに知っているように、これらのキャッシュの目的はパフォーマンスを向上させ、継続的なディスクアクセスを防ぐことです。特に、ファイルが開いている間に何度も更新される可能性があるinodeの場合はさらにそうです。
答え2
Linux仮想ファイルシステム(VFS)の一部として実装されたinodeキャッシュについて問い合わせました。キャッシュ(inodeキャッシュを含む)は、単に機能(例えば、inodeエントリアクセス)を提供するのではなく、これを達成するための他のメカニズムがあることを指摘したものです。
キャッシュを使用すると、ディスクなどのIOデバイスからinodeデータを取得するのが非常に遅くなるため、以前にアクセスしたinodeデータをメモリに保存すると、ファイルシステムへのアクセスが高速化される可能性があります。