Wie erstelle ich ein Watchdog-Skript, um Prozesse anzuhalten und fortzusetzen, falls andere CPU-intensive Prozesse ausgeführt werden?

Wie erstelle ich ein Watchdog-Skript, um Prozesse anzuhalten und fortzusetzen, falls andere CPU-intensive Prozesse ausgeführt werden?

Ich habe ein sehr großes Test-Setup, das mehrere Tage auf einem von vielen Parteien meiner Universität genutzten Server läuft.

Ich möchte den Prozess per PID anhalten (ebenso wie die vom Prozess ausgeführten Prozesse (falls aktuell Prozesse ausgeführt werden) und immer dann fortfahren, wenn die CPU-lastigen Prozesse gestoppt werden. Ich würde einen CPU-lastigen Prozess als relevant betrachten, wenn er mindestens einen Kern länger als 15 Sekunden zu 100 % nutzt.

(Ich bin nicht ganz sicher, wie ich die „top“-Ausgabe interpretieren soll, aber oft erscheinen Prozesse mit 2300 % CPU-Auslastung, was ich so interpretiere, dass 23 Kerne mit 100 % laufen oder 22 mit (100 % - x %) * 22 = 2300 % usw.)

Um einen Prozess anzuhalten, gibt es grundsätzlich zwei Bash-Befehle, zwischen denen ich wählen muss:

kill -TSTP [pid]

Und

kill -STOP [pid]

Um den Vorgang fortzusetzen, würde ich Folgendes verwenden:

kill -CONT [pid]

Seit meinPython-Skriptder im Testaufbau ausgeführteLaufzeitmessungen der von ihm ausgeführten ProzesseIch möchte fragen, ob es eine Möglichkeit gibt,Messen Sie nur die Zeit, während der Prozess läuft? (Ich messe die genaue Rechenzeit auch mit einer eingebauten Funktion des Prozesses, der von meinem Python-Skript ausgeführt wird, aber aufgrund einiger fragwürdiger Ergebnisse (die absolute Zeit ist fragwürdig, die relative Zeit scheint korrekt zu sein) hätte ich auch eine weniger genaue, aber zumindest einigermaßen brauchbare Zeitmessung von außen (dem Python-Skript))

Zusammenfassung

  1. Wie könnte ich ein Skript entwerfen, das diese Prozesse findet und entsprechend reagiert? (Kein Root auf dem Server, aber ich darf alle ausgeführten Prozesse sehen und meine eigenen Prozesse verwalten)
  2. Wie lassen sich bei diesen Prozessen genaue Zeitmessungen (+/- 10 Sekunden) durchführen, ohne die Zeit einzubeziehen, in der der Prozess angehalten war?

verwandte Informationen