Was bedeutet es genau, wenn ein Prozess „Zeit“ oben stehen geblieben ist?

11

Ich werde untersuchen, warum wir kritische Swap-Warnungen erhalten, und ich werde etwas finden wie:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  SWAP COMMAND
14683 user1     30  10 16.0g 772m  744 S  0.3  0.3 277:24.87 6.5g MATLAB
14576 user1     30  10 8125m 1.1g  736 S  0.3  0.4 261:16.73 4.1g MATLAB

Dabei wird die Spalte TIME + für diese Prozesse eingefroren.

Meine Frage ist oben, was bedeutet das?

Nach meinem Verständnis bedeutet angehaltene Zeit, dass es sich um einen ruhenden Prozess handelt, der nicht von der CPU verarbeitet wird. Das obige Beispiel zeigt jedoch eine CPU-Auslastung von 0,3%. Sollte die Zeitspalte trotz der Tatsache, dass sie sehr klein ist, nicht weiter erhöht werden?

Sind diese Prozesse "abgeschlossen"? In welchem ​​Fall werden sie aufgeräumt? Muss der Benutzer, der sie gestartet hat, sie bestätigen oder etwas, damit diese Ressourcen freigegeben werden?

CptSupermrkt
quelle
1
Bei 0,3% ist das alle 3/4 Sekunden 1 Centi-Sekunde. Hast du lange genug gewartet?
Stéphane Chazelas
1
Umwerfende Offenbarung: Der Zeitanstieg wird als Prozentsatz der CPU-Auslastung berechnet. Beeindruckend. Wenn es also 100% CPU wäre, wäre das gleich Echtzeit?
CptSupermrkt
5
TIME ist die kumulierte Zeit, die die CPU (jede CPU) seit dem Start für die Ausführung eines Threads im Prozess aufgewendet hat. Es kann also sogar schneller als in Echtzeit gehen, wenn Sie mehrere CPU-Kerne haben und der Prozess Multithreading ist.
Stéphane Chazelas

Antworten:

10

Wenn Sie einen gefälschten Job wie ausführen sleep 120und ihn dann ansehen, werden htopSie feststellen, dass sein Status als S"SLEEP" bezeichnet wird und der TIMEProzess für die Dauer bei 0: 00.00 bleibt.

Dies liegt daran, dass dieser Prozess 0 CPU-Zeit verbraucht, was die Absicht der TIMESpalte ist. Es verfolgt die CPU-Zeit, die ein bestimmter Prozess verwendet hat.

              ss # 1

Diese Anzahl kann manchmal verwirrend sein, wenn ein Prozess auf mehreren CPU-Kernen ausgeführt werden kann, da er scheinbar mehr Zeit verbraucht als verfügbar ist. Alles, was dort vor sich geht, ist, dass wenn Sie X Kerne haben, Ihre Zeit als X * ZEIT angezeigt werden kann.

slm
quelle
4

Der Grund, warum Sie möglicherweise eine solche Ungleichheit erhalten, ist, dass die Spalte TIME + die CPU-Zeit nicht berücksichtigt, die von toten Kindern des aufgelisteten Prozesses verwendet wird. Ich würde mir also vorstellen, dass die von Ihnen angezeigten Zeilen auf eine Anwendung hinweisen, die (möglicherweise schnell) ist. laichende Kinder, die fast sofort sterben ..

So, the CPU usage is due to spawned children which do not count in the TIME+ column. Sie können oben wechseln, um die kumulative Zeit über den Schalter 'S' zu berechnen.

Aber ich denke, Sie suchen nach den falschen Indikatoren für das, was Sie untersuchen möchten.

strace -p <pid> ist dein Freund hier und ermöglicht dir einen Blick in den laufenden Prozess und was genau er tut.

Strace hat eine Vielzahl von Möglichkeiten. Einige bemerkenswerte Optionen sind -f, -ff, -i, v usw. Strace ist ein äußerst nützliches Tool. Am besten tun Sie dies man straceund überzeugen Sie sich selbst von den Optionen, die es Ihnen zur Fehlerbehebung bei solchen Problemen bietet

Chux Uzoeto
quelle