web-dev-qa-db-ja.com

キャッシュに存在するすべてのファイルを一覧表示します

これは 質問 キャッシュの一部を見つける方法に関する質問への回答です。ただし、fincore実行可能ファイルでは、ファイル名を渡して、それがキャッシュの一部であるかどうかを確認する必要があります。

ファイル名を渡さずにキャッシュされたメモリの一部であるすべてのエントリを見つけるツールまたは方法はありますか?.

PS:組み込みシステムで実行しており、forループを実行してすべてのファイルをfincore自体に渡すことは、より多くの時間とメモリを消費するプロセスです。したがって、他の方法を探しています。

8
Joe

カーネルがキャッシュしたブロックに関連付けられたファイル名を公開する場所を知りません。この答えによると

https://stackoverflow.com/a/4941371

カスタムカーネルモジュールを使用しても実行できる最善の方法は、iノードとデバイスのリストを取得することです。そこから、ファイルシステムを調べてそれらのファイルを探す必要があるでしょう。

次に、「しかし、リストしたファイルについてfincoreはどうやって知るのですか?」あるいは、そうでないかもしれませんが、私はメソッドがかなり賢いので、ここにあります。 fincoreツールは次のように機能します。

mincoreシステムコールは、メモリの特定のページがコアメモリにあるかどうかを通知します(つまり、アクセス時にページフォールトが発生しません)。 mmapはマップされたファイルを遅延読み込みし、マップされた領域をまだ読み込んでいないため、できないページによって引き起こされるページそれ以外の場合、ページ違反はキャッシュの一部でなければなりません。

6
Steven D