Listar todos os arquivos que estão presentes no cache

8

Este pergunta respostas para a pergunta sobre como encontrar o que faz parte do cache. No entanto, no executável fincore , você precisa passar o nome do arquivo para verificar se ele faz parte do cache.

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

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

    
por Joe 13.11.2014 / 10:23

1 resposta

6

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

link

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:

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 uma falha de página devem ser parte de nosso cache.

    
por 14.11.2014 / 03:38