Uso da memória de um determinado processo (usando o sistema de arquivos proc do Linux)

2

Eu quero saber quais arquivos do diretório / proc e quais campos desses arquivos eu preciso calcular o uso de memória de um determinado pid. Eu tenho usado o arquivo "stat" e o parâmetro "vsize" que está neste arquivo, mas não é um bom cálculo. Alguém conhece uma fórmula melhor para isso? Obrigado Ana.

    
por Fran Rios 18.08.2015 / 19:05

1 resposta

7

De fato, você precisa usar /proc/ ; então leia atentamente proc (5) .

Para o processo 1234, você deseja ler /proc/1234/maps (ou /proc/1234/smaps ) para obter o espaço de endereço e ler /proc/1234/status & /proc/1234/statm

Para seu próprio processo (programaticamente), use /proc/self/maps , /proc/self/status , /proc/self/statm

Observe que uso de memória é um termo muito ambíguo no Linux. Como você contaria um segmento de arquivo mmap -ed por dois processos? Consulte mmap (2) & getrusage (2)

Teste cat /proc/self/maps , cat /proc/$$/maps em um terminal. Leia as páginas wiki no espaço de endereço , memória virtual , cache de páginas , ASLR , ELF , RSS , conjunto de trabalhos ...

    
por 18.08.2015 / 19:08