
Eu tenho uma configuração de teste muito grande que dura vários dias em um servidor usado por muitas partes da minha universidade.
Gostaria de pausar o processo por pid (assim como os processos executados pelo processo (caso haja processos em execução no momento) e continuar sempre que os processos com uso pesado de CPU forem interrompidos. Eu consideraria um processo com uso pesado de CPU como relevante quando for usa pelo menos um núcleo a 100% por mais de 15 segundos.
(Não tenho muita certeza de como interpretar a saída "superior", mas muitas vezes aparecem processos com 2300% de uso da CPU, que interpreto como 23 núcleos rodando a 100% ou 22 em (100%-x%)*22=2300% etc.)
Para pausar um processo, existem basicamente dois comandos bash entre os quais devo escolher:
kill -TSTP [pid]
e
kill -STOP [pid]
para continuar o processo eu usaria:
kill -CONT [pid]
Desde o meuscript pythonexecutado na configuração de teste fazmedições de tempo de execução de processos executados por eleGostaria de perguntar se existe uma maneira demedir apenas o tempo enquanto o processo está em execução? (Eu também meço o tempo exato de cálculo por uma função integrada do processo executado pelo meu script python, mas devido a alguns resultados questionáveis (o tempo absoluto é questionável, o tempo relativo parece estar correto) eu também teria um resultado menos preciso, mas pelo menos uma medição de tempo utilizável externamente (o script python))
Resumo
- Como eu poderia criar um script que encontre esses processos e reaja de acordo? (Sem root no servidor, mas tenho permissão para ver todos os processos executados e lidar com meus próprios processos)
- Como fazer medições de tempo precisas (+/- 10 segundos) nesses processos, sem incluir o tempo em que o processo foi pausado?