Eu não sei de nenhum lugar onde o kernel exponha os nomes de arquivos associados aos blocos que ele armazenou em cache. De acordo com esta resposta
O melhor que você poderia fazer, mesmo com um módulo de kernel personalizado, seria obter uma lista de inodes e dispositivos. A partir daí, você provavelmente precisará percorrer o sistema de arquivos procurando esses arquivos.
Você pode perguntar "Mas, como fincore
sabe sobre os arquivos listados?" Ou você pode não, mas achei o método bastante inteligente, então aqui está. A ferramenta fincore
funciona da seguinte maneira:
- chamando mmap (2) no arquivo fornecido ( link )
- chamando mincore (2) na região de memória retornada por mmap ( link )
A chamada do sistema mincore
informa se as páginas de memória fornecidas estão na memória principal (isto é, não causariam uma falha de página quando acessadas). Como mmap
lazily carrega o arquivo mapeado, e ainda não lemos nenhuma região mapeada, quaisquer páginas que não