
Tengo una configuración de prueba muy grande que se ejecuta durante varios días en un servidor utilizado por muchas partes de mi universidad.
Me gustaría pausar el proceso por pid (así como los procesos ejecutados por el proceso (en caso de que actualmente haya procesos en ejecución) y continuar cada vez que se detengan los procesos con mucha CPU. Consideraría que un proceso con mucha CPU es relevante cuando utiliza al menos un núcleo al 100% durante más de 15 segundos.
(No estoy realmente seguro de cómo interpretar el resultado "superior", pero a menudo aparecen procesos con un uso de CPU del 2300%, lo que interpreto como que 23 núcleos se ejecutan al 100% o 22 al (100%-x%)*22=2300%. etc.)
Para pausar un proceso existen básicamente dos comandos bash entre los cuales tengo que elegir:
kill -TSTP [pid]
y
kill -STOP [pid]
para continuar el proceso usaría:
kill -CONT [pid]
Desde misecuencia de comandos de Pythonejecutado en la configuración de pruebamediciones en tiempo de ejecución de los procesos ejecutados por élMe gustaría preguntar si hay una manera demedir sólo el tiempo mientras se ejecuta el proceso? (También mido el tiempo de cálculo exacto mediante una función incorporada del proceso ejecutado por mi script de Python, pero debido a algunos resultados cuestionables (el tiempo absoluto es cuestionable, el tiempo relativo parece ser correcto) también tendría un tiempo menos preciso pero al menos algo de medición de tiempo utilizable desde el exterior (el script de Python))
Resumen
- ¿Cómo podría diseñar un script que encuentre esos procesos y reaccione en consecuencia? (No tengo root en el servidor, pero puedo ver todos los procesos ejecutados y manejar mis propios procesos)
- ¿Cómo realizar mediciones de tiempo precisas (+/- 10 segundos) en esos procesos sin incluir el tiempo que estuvo en pausa el proceso?