Wie berechnet sich die CPU-Auslastung eines Prozesses & alle seine untergeordneten Prozesse, die in Linux?
Ich möchte wissen, die CPU-Auslastung eines Prozesses, und alle Kind-Prozesse, für einen festen Zeitraum, in Linux.
Um genauer zu sein, hier ist mein use-case:
Es ist ein Prozess, der darauf wartet, dass eine Anfrage von dem Benutzer zum ausführen der Programme. Zum ausführen der Programme, dieser Prozess ruft Kind-Prozessen (bis maximal 5 auf einmal), & für jedes dieser Kind-Prozess ausgeführt wird 1 dieser eingereichten Programme (sagen wir mal eingereichten 15 Programme auf einmal). Also, wenn Benutzer übermittelt 15 Programme, 3 Chargen von 5 child-Prozesse jeweils ausgeführt wird. Kind-Prozesse werden getötet, sobald Sie beenden Ihre Ausführung des Programms.
Ich will wissen, über % CPU-Auslastung der parent-Prozess und alle seine child-Prozesse während der Ausführung dieser 15 Programme.
Gibt es eine einfache Möglichkeit, dies zu tun mit Spitze oder anderen Befehl? (Oder irgendein tool, das ich anbringen sollten, um den übergeordneten Prozess.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie diese Informationen finden Sie in
/proc/PID/stat
wo PID ist Ihre parent-Prozess die Prozess-ID. Unter der Annahme, dass der übergeordnete Prozess wartet auf seine Kinder, dann die gesamte CPU-Nutzung berechnet werden kann, aus utime, stime, cutime und cstime:Sehen proc(5) - Handbuchseite für details.
Möglicherweise nicht den genauen Befehl. Aber Sie können etwas tun, wie unten für die cpu-Nutzung der verschiedenen Verfahren und fügen Sie es hinzu.
#ps -C sendmail,firefox -o pcpu= | awk '{s+=$1} END {print s}'
/proc/[pid]/stat Status-Informationen über den Prozess. Diese wird von ps und machte in human-readable form.
Andere Möglichkeit ist die Verwendung von cgroups und verwenden cpuacct.
http://www.kernel.org/doc/Documentation/cgroups/cpuacct.txt
https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/sec-cpuacct.html
Und natürlich können Sie es tun in hardcore-Weg mit der guten alten C
find_cpu.c
Kompilieren:
Genießen!
popen
zum Aufruf eines externen Dienstprogramm, um die Arbeit zu tun, ist nicht wirklich ein "hardcore" - Weg zu benutzen, C. 😉Hier one-liner zu berechnen, die gesamte CPU für alle Prozesse. Sie können es anpassen, indem Sie die übergabe der Spalte filter in der top-Ausgabe:
Hallo Sergej Rodionov, ist es ein Weg, um die Prozess-Gesamtzeit in Stunden, Minuten, Sekunden mit Ihrer syntax?