Listar todos os arquivos presentes no cache

8

Esta pergunta responde à pergunta sobre como encontrar o que faz parte do cache. No entanto, no fincoreexecutável, você deve passar o nome do arquivo para verificar se ele faz parte do cache.

Existe uma ferramenta ou um método para localizar todas as entradas que fazem parte da memória em cache sem passar os nomes dos arquivos.

PS: Estamos rodando em um sistema incorporado, e executar um loop for e passar todos os arquivos para fincoresi é um processo que consome mais tempo e memória. Por isso, estou procurando outros métodos.

Joe
fonte

Respostas:

6

Não conheço nenhum lugar em que o kernel exponha os nomes de arquivos associados aos blocos em cache. De acordo com esta resposta

https://stackoverflow.com/a/4941371

O melhor que você provavelmente poderia fazer, mesmo com um módulo de kernel personalizado, seria obter uma lista de inodes e dispositivos. A partir daí, você provavelmente ainda precisará percorrer o sistema de arquivos procurando por esses arquivos.

Você pode perguntar "Mas, como é fincoreque os arquivos que eu listei?" Ou talvez não, mas achei o método bastante inteligente, então aqui está. A fincoreferramenta funciona da seguinte maneira:

A mincorechamada do sistema informa se as páginas de memória especificadas estão na memória principal (ou seja, não causariam falha na página quando acessadas). Como mmappreguiçosamente carrega o arquivo mapeado e ainda não lemos nenhuma região mapeada, qualquer página que não cause uma falha na página deve fazer parte do nosso cache.

Steven D
fonte