Daftar semua file yang ada dalam cache

8

Pertanyaan ini menjawab pertanyaan tentang bagaimana menemukan bagian cache yang mana. Namun, dalam fincoreexecutable Anda harus memberikan nama file untuk memeriksa apakah itu bagian dari cache.

Apakah ada alat atau metode untuk menemukan semua entri yang merupakan bagian dari memori yang di-cache tanpa melewati nama file.

PS: Kami menjalankannya dalam sistem tertanam, dan menjalankan for for loop dan meneruskan semua file ke fincoredirinya sendiri adalah proses yang menghabiskan lebih banyak waktu dan memori. Karenanya, saya mencari metode lain.

Joe
sumber

Jawaban:

6

Saya tidak tahu ada tempat di mana kernel memperlihatkan nama file yang terkait dengan blok yang telah di-cache. Menurut jawaban ini

https://stackoverflow.com/a/4941371

Yang terbaik yang mungkin dapat Anda lakukan bahkan dengan modul kernel khusus adalah dengan mendapatkan daftar inode dan perangkat. Dari sana Anda mungkin masih harus berjalan di sistem file mencari file-file itu.

Anda kemudian dapat bertanya, "Tapi, bagaimana cara fincoremengetahui tentang file yang saya daftarkan?" Atau Anda mungkin tidak, tetapi saya menemukan metode ini cukup pintar, jadi ini dia. The fincorealat bekerja dengan melakukan hal berikut:

The mincoresystem call memberitahu Anda apakah halaman yang diberikan memori berada di memori inti (yaitu, tidak akan menyebabkan kesalahan halaman saat diakses). Karena mmapmalas memuat file yang dipetakan, dan kami belum membaca salah satu wilayah yang dipetakan, halaman mana pun yang tidak menyebabkan kesalahan halaman harus menjadi bagian dari cache kami.

Steven D
sumber