これは 質問 キャッシュの一部を見つける方法に関する質問への回答です。ただし、fincore
実行可能ファイルでは、ファイル名を渡して、それがキャッシュの一部であるかどうかを確認する必要があります。
ファイル名を渡さずにキャッシュされたメモリの一部であるすべてのエントリを見つけるツールまたは方法はありますか?.
PS:組み込みシステムで実行しており、forループを実行してすべてのファイルをfincore
自体に渡すことは、より多くの時間とメモリを消費するプロセスです。したがって、他の方法を探しています。
カーネルがキャッシュしたブロックに関連付けられたファイル名を公開する場所を知りません。この答えによると
https://stackoverflow.com/a/4941371
カスタムカーネルモジュールを使用しても実行できる最善の方法は、iノードとデバイスのリストを取得することです。そこから、ファイルシステムを調べてそれらのファイルを探す必要があるでしょう。
次に、「しかし、リストしたファイルについてfincore
はどうやって知るのですか?」あるいは、そうでないかもしれませんが、私はメソッドがかなり賢いので、ここにあります。 fincore
ツールは次のように機能します。
mincore
システムコールは、メモリの特定のページがコアメモリにあるかどうかを通知します(つまり、アクセス時にページフォールトが発生しません)。 mmap
はマップされたファイルを遅延読み込みし、マップされた領域をまだ読み込んでいないため、できないページによって引き起こされるページそれ以外の場合、ページ違反はキャッシュの一部でなければなりません。