
У меня есть очень большая тестовая установка, которая работает в течение нескольких дней на сервере, используемом многими сторонами в моем университете.
Я хотел бы приостановить процесс по pid (а также процессы, выполняемые процессом (если в данный момент есть запущенные процессы) и продолжить его выполнение всякий раз, когда останавливаются процессы, интенсивно использующие процессор. Я бы считал процесс, интенсивно использующий процессор, актуальным, если он использует хотя бы одно ядро на 100% в течение более 15 секунд.
(Я не совсем уверен, как интерпретировать «верхний» вывод, но часто появляются процессы с загрузкой процессора 2300%, что я интерпретирую как 23 ядра, работающие на 100% или 22 на (100%-x%)*22=2300% и т. д.)
Чтобы приостановить процесс, мне нужно выбрать одну из двух команд bash:
kill -TSTP [pid]
и
kill -STOP [pid]
для продолжения процесса я бы использовал:
kill -CONT [pid]
Так как мойскрипт на Pythonвыполненный в тестовой установке делаетизмерения времени выполнения процессов, выполняемых имЯ хотел бы спросить, есть ли способизмеряйте только время, пока выполняется процесс? (Я также измеряю точное время вычислений с помощью встроенной функции процесса, выполняемого моим скриптом Python, но из-за некоторых сомнительных результатов (абсолютное время сомнительно, относительное время кажется правильным) я также хотел бы получить менее точное, но, по крайней мере, в некоторой степени пригодное для использования измерение времени извне (скрипт Python))
Краткое содержание
- Как мне разработать скрипт, который находит эти процессы и реагирует соответствующим образом? (На сервере нет прав root, но мне разрешено видеть все выполняемые процессы и управлять своими собственными процессами)
- Как выполнить точные измерения времени (+/- 10 секунд) для этих процессов, не включая время приостановки процесса?