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 pidstatutilidad 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.1sdeberí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 asociadostatma 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 permitensleepvalores de menos de un segundo , por lo que en ese caso, tendría que tomar la ruta de Python (y usar latimebiblioteca incorporada de Python para dormir).Respuestas:
Esto debería hacer lo que necesitas. Obtiene la información
/proc/$PID/statme imprime (desdeman procfs):La secuencia de comandos:
Luego puede llamar al script, dándole un nombre de proceso como entrada. Por ejemplo:
NOTAS
fuente
manallí, 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