Die CPU-Auslastung hoch für einen schlafenden Prozesse
Ich habe einen Prozess, der zu sein scheint festgefahren:
# strace -p 5075
Process 5075 attached - interrupt to quit
futex(0x419cf9d0, FUTEX_WAIT, 5095, NULL
Es ist das sitzen auf dem "futex" - system nennen, und scheint auf unbestimmte Zeit warten auf ein lock. Der Prozess gezeigt werden, verbrauchen eine große Menge der CPU, wenn "oben" wird ausgeführt:
# top -b -n 1
top - 23:13:18 up 113 days, 4:19, 1 user, load average: 1.69, 1.74, 1.72
Tasks: 269 total, 1 running, 268 sleeping, 0 stopped, 0 zombie
Cpu(s): 8.1%us, 0.1%sy, 0.0%ni, 91.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 12165696k total, 3810476k used, 8355220k free, 29440k buffers
Swap: 8388600k total, 43312k used, 8345288k free, 879988k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5075 omdb 18 0 2373m 1.7g 26m S 199.7 14.9 102804:11 java
Den Prozess ist, zeigt sich auch in einer "S" - Schlafmodus, was Sinn macht, wenn es das warten auf eine Ressource. Aber ich verstehe nicht, warum die CPU-Auslastung annähernd 200%, wenn der Prozess in den Ruhezustand. Warum top-Bericht, wie hoch die CPU-Auslastung auf einen schlafenden Prozess? Sollte nicht die CPU-Auslastung gleich null sein?
InformationsquelleAutor der Frage blindsnowmobile | 2012-05-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keinen Zusammenhang zwischen CPU-Auslastung so berichtet
top
- und Prozess-Status. Die Manpage sagt (Schwerpunkt von mir):So, Ihr Prozess in der Tat eine riesige Menge an Prozessor-Zeit seit dem letzten Bildschirm-update. Es schläft, ja, aber das ist, weil die aktuell Laufenden Prozess ist
top
selbst (was Sinn macht, da es derzeit die Aktualisierung des Bildschirms).InformationsquelleAutor der Antwort Frédéric Hamidi
Den
top
Ausgang ist völlig normal.Die Durchschnittliche Auslastung Berechnungen umfassen Prozesse, die warten auf etwas (Mutexe/futexes, IO etc.) sowie Prozesse, die sind eigentlich mit der CPU. Testen Sie es, sagen Sie, läuft so etwas wie:
beobachten und Spitzenleistung zu sehen, was passiert. Es erhöht sich die Durchschnittliche Belastung von 1.
Wenn Sie sich diese Zeile:
die "id" in "91.8%id" bedeutet "Leerlauf". Also die CPU ist eigentlich nicht viel tun überhaupt.
InformationsquelleAutor der Antwort Michael Slade
Enthält Ihre Anwendung Gabel Kind-Prozesse? Die strace-Ausgabe kann darauf hindeuten, dass der wichtigste Prozess ist nur darauf warten für die Kind-Prozesse Ihre Arbeit beenden. Wenn dem so ist, könnten Sie versuchen,
zu verfolgen, die Kind-Prozesse.
InformationsquelleAutor der Antwort Aaron Novstrup