uma ferramenta útil para medir o consumo de memória de um programa [duplicado]

2

Eu desenvolvo um código em C no Debian. Eu estou procurando um programa para monitorar o consumo de memória do meu código em tempo real. O único valor que eu me preocupo é o consumo máximo de RAM, ele deve manter o valor mesmo se o programa for morto (por exemplo, por SIGKILL). Alguém poderia sugerir uma ferramenta útil para isso?

Normalmente eu uso top -p pidnumber , mas ele sai com muito atraso e se o meu programa for morto, ele não mostra o consumo de RAM antes de ser finalizado.

    
por Angs 05.08.2013 / 15:18

2 respostas

3

Você pode usar o maciço da ferramenta Valrind.

valgrind --tool=massif prog

Por padrão, ele cria um gráfico da memória heap usada, mas também pode mostrar a memória de pilha usada com

valgrind --tool=massif --stacks=yes prog

Valgrind tem a tendência de retardar a execução do seu programa, portanto, esteja avisado se o seu aplicativo for executado por um longo tempo.

Para mais informações sobre o Massif, posso recomendar a documentação do Valgrind que é muito boa.

    
por 05.08.2013 / 16:25
2

Você pode alterar o atraso em top com top -d delay ou pressionando s na parte superior.

Para obter o tamanho de residente a cada segundo:

while rss=$(ps -o rss= -p "${pid?}") && printf '\r%d' "$rss"; do
  sleep 1; done; echo

Ou para ficar mais chique:

sp="/-\|"
while rss=$(ps -o rss=,args= -p "${pid?}") && printf '\r[%c]%s' "$sp" "$rss"; do
  sleep 0.5; sp=${sp#?}${sp%???}; done; echo
    
por 05.08.2013 / 16:32