Quero executar um programa que consome memória e acompanhar seu uso de memória ao longo do tempo. O programa termina em alguns segundos após a chamada.
Esta pergunta anterior sugeriu o pacote sysstat . Embora seu pidstat
utilitário faça parcialmente o que eu quero, ele não atende às minhas 2 necessidades:
- Ele aceita um intervalo mínimo de
1s
, mas quero medir com granularidade mais curta. (0.1s
deve ficar bem) - Ele rastreia apenas um processo existente, embora nem sempre esteja presente para copiar e colar o pid.
Existem scripts / utilitários alternativos para executar melhor o trabalho de invocar e medir?
/proc/$PID/statm
) e depois dormir por 100ms e repetir. Por que você não pode simplesmente continuar jogando do PID associadastatm
através decat
, talvez usar algum regex para filtrar fora os valores extra / desnecessários, e apenas fazer umsleep 0.01
? Alguns sistemas operacionais não permitemsleep
valores abaixo de segundos , portanto, nesse caso, você teria que seguir a rota Python (e usar atime
biblioteca interna do Python para dormir).Respostas:
Isso deve fazer o que você precisa. Ele obtém as informações
/proc/$PID/statm
e as imprime (deman procfs
):O script:
Você pode chamar o script, dando a ele um nome de processo como entrada. Por exemplo:
NOTAS:
fonte
man
, não sei por que sua edição foi rejeitada.Depois de anos, descobri que o valgrind (também) tem uma ferramenta para isso:
Nota: o valgrind faz mais do que observar: ele precisa injetar algum código e tirar instantâneo da memória. Isso pode prejudicar a precisão das estatísticas.
fonte