Há casos em que observar a memória inativa é interessante, uma alta proporção de memória ativa para inativa pode indicar pressão de memória, por exemplo, mas essa condição é geralmente acompanhada de paginação / troca, que é mais fácil de entender e observar. O arquivo /proc/kpageflags
contém um bitmap de 64 bits para cada página de memória física, você pode obter um resumo com page-types
que pode vir com o seu kernel.
Sua compreensão de ativos e inativos está incorreta, no entanto
- memória ativa são páginas que foram acessadas "recentemente"
- memória inativa são páginas que não foram acessadas "recentemente"
"recentemente" não é uma medida absoluta de tempo, mas depende também da atividade e pressão de memória (você pode ler alguns detalhes técnicos no livro livre Entendendo o Gerenciador de Memória Virtual do Linux , Capítulo 10 é relevante aqui), ou a documentação do kernel (< href="https://www.kernel.org/doc/Documentation/vm/pagemap.txt"> pagemap.txt ).
Cada lista é armazenada como uma LRU (mais ou menos). As páginas de memória inativas são boas candidatas para gravar no swapfile, seja preventivamente (antes que as páginas de memória livre sejam necessárias) ou quando a memória livre fica abaixo de um limite configurado e páginas livres são necessárias.
Indique as maçãs às páginas alocadas para os processos em execução, com exceção da memória persistente ou compartilhada, toda a memória é liberada quando um processo é encerrado. Caso contrário, seria considerado um bug.
Esse sinalizador de página de baixo nível não precisa conhecer o PID (e uma página de memória pode ter mais de um PID com ele mapeado em qualquer caso), portanto as informações necessárias para fornecer os dados solicitados não estão em um Lugar, colocar.
Para fazer isso em uma base por processo, você precisa extrair os intervalos de endereços virtuais de /prod/PID/maps
, converter em PFN (página física) com /proc/PID/pagemap
e indexar em /proc/kpageflags
. Está tudo descrito em pagemap.txt
, e leva cerca de 60-80 linhas de C. A menos que você esteja solucionando problemas no sistema VM, os números não são muito interessantes. Uma coisa que você pode fazer é contar as páginas inativas e de backup por swap, esses números devem indicar os processos que têm um tamanho baixo de RSS (residente) em comparação com o VSZ (tamanho total da VM). Outra coisa pode ser inferir um vazamento de memória, mas existem ferramentas melhores para essa tarefa.