Como monitorar a memória consumida por um processo?

16

Eu tenho um processo que gostaria de ver quanta memória ela consome enquanto está em execução.

Agora eu faço isso:

ps faux | grep casper

Mas isso só me dá a informação daquele momento. Seria bom ver esse valor mudar conforme o script prossegue.

Alguma maneira de fazer isso?

Hommer Smith
fonte

Respostas:

15

Método 1

Corre:

top

Verifique o PID do programa (primeira coluna) e execute:

top -p PID

Método 2

Cole isso no terminal ou salve-o como mem_usage.sh e execute-o no terminal.

#! /bin/bash
while :
do
    clear
    ps faux | grep casper
    sleep 1s
done
Julian Stirling
fonte
11
Como você pode mudar isso de mostrar%? Fora de interesse :-)
Wilf
Eu recebo isso ao executar o script: bash: ./memory_usage.sh: bin / bash: bad intérprete: Não existe esse arquivo ou diretório #
Hommer Smith
Bah! Eu editei! Deveria ter verificado corretamente antes de postar. A primeira linha deve dizer onde para executá-lo a partir de / bin / bash (eu tinha bin / bash para que ele estava verificando localmente em uma pasta chamada bin para bash)
Julian Stirling
11
@ wilf ps falso | grep casper | awk '{print $ 11} {print $ 6}' Isso deve fornecer a você em uma linha o nome do programa e na próxima o tamanho real da memória em kB.
Julian Stirling
6

Para monitorar apenas seu processo, você pode verificar / proc / PID / status ou / proc / PID / statm.

Sobre / proc / PID / statm:

Depois de fazer cat /proc/PID/statmvocê deve ver o seguinte:

611450 185001 883 18 0 593431 0

Explicação:

  1. size: - tamanho total do programa (611450 X 4096/1024 = 2445800kB = 2388M)
  2. resident: - tamanho do conjunto de residentes (185001 X 4096/1024 = 740004kB = 722M)
  3. compartilhar: - páginas compartilhadas (883 X 4096 = 3532)
  4. trs: - texto (código) (18 X 4096/1024 = 72 kB = VmExe)
  5. drs: - dados / pilha
  6. lrs: - library (593431 X 4096/1024 = 2373724kB = VmData + VmStk)
  7. dt: - páginas sujas

Além disso, você pode registrar a atividade de memória do seu processo, executando um loop usando date e cat.

yilmi
fonte
4

você pode usar 'top'

man top

Este programa permite que você classifique o uso de recursos, entre outros, RSS, VSZ, CPU, etc. É muito útil.

Como alternativa, para uma análise mais detalhada do uso de memória, tente 'pmap'

man pmap

Exemplo de uso:

pmap -x 1234

Felicidades

sc.

queijo suíço
fonte
11
Com pmap -x PID, você quis dizer o uso incrivelmente detalhados :-)
Wilf
na verdade - nunca pode ter bastante detalhe :)
swisscheese
11
No meu (Ubuntu 16.04.5 LTS), "pmap -x" com o PID não mostra nada além de PID e o comando. -X faz o mesmo.
orrd 24/09/19
2

Abra o System Monitor e vá para a Processesguia:

Wilf
fonte
1

Tente:

watch 'ps faux | grep -v grep | grep casper'

Você também pode alterar o intervalo de atualização usando o --interval <seconds>parâmetro

Martin Dvorak
fonte
11
Você não precisa do -v grep se alterar o final para grep [c] asper. Isso corresponde ao casper, mas não a si próprio.
Wudang