Quiero ejecutar un programa que consuma memoria y rastrear su uso de memoria con el tiempo. El programa termina en unos segundos después de invocado.
Esta pregunta anterior sugirió el paquete sysstat . Si bien su pidstat
utilidad en parte hace lo que quiero, no cumple con mis 2 necesidades:
- Acepta un intervalo mínimo de
1s
, pero quiero medir con una granularidad más corta. (0.1s
debería estar bien) - Solo rastrea un proceso existente, mientras que no siempre puedo estar presente para copiar y pegar el pid.
¿Hay algunos scripts / utilidades alternativas para mejorar el trabajo de invocar y medir?
/proc/$PID/statm
), y luego dormir durante 100 ms y repetir. ¿Por qué no puedes seguir tirando del PID asociadostatm
a través decat
, tal vez utilizar algunas expresiones regulares para filtrar fuera de los valores extra / innecesarios, y acaba de hacer unasleep 0.01
? Algunos sistemas operativos no permitensleep
valores de menos de un segundo , por lo que en ese caso, tendría que tomar la ruta de Python (y usar latime
biblioteca incorporada de Python para dormir).Respuestas:
Esto debería hacer lo que necesitas. Obtiene la información
/proc/$PID/statm
e imprime (desdeman procfs
):La secuencia de comandos:
Luego puede llamar al script, dándole un nombre de proceso como entrada. Por ejemplo:
NOTAS
fuente
man
allí, no sé por qué se rechazó tu edición.Después de años descubrí que valgrind (también) tiene una herramienta para esto:
Nota: valgrind hace más que observar: necesita inyectar algo de código y tomar una instantánea de la memoria. Esto puede dañar la precisión de las estadísticas.
fuente