Список всех файлов, которые присутствуют в кеше


8

Этот вопрос отвечает на вопрос о том, как найти то, что является частью кеша. Однако в fincoreисполняемом файле вы должны передать имя файла, чтобы проверить, является ли оно частью кеша.

Есть ли инструменты или метод, чтобы найти все записи, которые являются частью кэшированной памяти, не передавая имена файлов.

PS: мы запускаем его во встроенной системе, и выполнение цикла for и передача всех файлов fincoreсебе - это процесс, занимающий больше времени и памяти. Следовательно, я ищу другие методы.

Ответы:


6

Я не знаю ни одного места, где ядро ​​раскрывает имена файлов, связанные с кешируемыми блоками. Согласно этому ответу

https://stackoverflow.com/a/4941371

Лучшее, что вы могли бы сделать даже с пользовательским модулем ядра, - это получить список inode и устройств. Оттуда вам, вероятно, все равно придется пройтись по файловой системе в поисках этих файлов.

Затем вы можете спросить: «Но как fincoreузнать о файлах, которые я перечислил?» Или нет, но я нашел способ довольно умным, так что вот оно. fincoreИнструмент работает, выполнив следующие действия :

mincoreСистемный вызов говорит вам ли данные страница памяти находится в оперативной памяти (то есть, не вызовет ошибку страницы при доступе). Поскольку mmapлениво загружает сопоставленный файл, и мы еще не прочитали ни одной сопоставленной области, любые страницы, которые не вызовут сбой страницы, в противном случае должны быть частью нашего кэша.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.