Como posso encontrar a quantidade de memória consumida por um processo?

4

Como posso encontrar a quantidade de memória principal consumida por um processo usando ps aux ?

Eu tenho um processo que dura meia hora. É possível encontrar a quantidade máxima de memória principal consumida por ele usando ps aux ?

Eu tentei executar o ps aux , mas ele apenas me dá a quantidade de memória consumida no momento em que o executei. Eu não vejo como posso encontrar a quantidade máxima de memória principal consumida pelo processo. Uma opção é executar ps novamente e continuar olhando para a saída. Eu não acho essa opção viável o suficiente. Existe alguma outra saída no Linux?

    
por Jannat Arora 19.12.2013 / 22:06

3 respostas

5

Parece que você realmente precisa de algum tipo de ferramenta de monitoramento contínuo para registrar estatísticas como o uso da memória ao longo do tempo.

Eu sugeriria o que você está fazendo agora e repetidamente executando o comando ps para obter o tamanho da memória usada por processo.

Você precisaria de uma maneira de analisar a saída em um gráfico ou tabela legível para mostrar valores ao longo do tempo.

Pessoalmente, eu gosto desse pequeno comando que peguei de alguém em outro fórum para mostrar o uso de memória de uma maneira legível:

ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }'
    
por 19.12.2013 / 22:50
1

A ferramenta atop pode ser útil aqui. Ele pode ser executado como um daemon e armazenar informações sobre o consumo de recursos de cada processo periodicamente. Oferece-lhe a possibilidade de percorrer os resultados, o que lhe permite descobrir qual a quantidade máxima de memória utilizada pelo processo.

Outras alternativas são ferramentas como munin e cactos, que podem representar graficamente o consumo de memória por processo (e muitas outras coisas).

    
por 19.12.2013 / 23:04
0

Em geral, você pode ver o arquivo / proc / [pid] / status. Inclui valores de VmPeak e RSS.

Se você estiver interessado em memória RSS, poderá fazer algo como:

while true ;  do ( echo -n 'date' ""   ; grep RSS /proc/[pid]/status ) | tee -a /tmp/historyofrss ; sleep 0.1 ; done
    
por 20.12.2013 / 20:12