Using the ps command
Der Befehl ps ist ein flexibles Tool zum Ermitteln der Programme, die auf dem System ausgeführt werden, und der Ressourcen, die sie verwenden. Er zeigt Statistiken und Statusinformationen zu Prozessen im System an, z. B. Prozess-oder Thread-ID, E/A-Aktivität, CPU-und Speicherauslastung.
In diesem Abschnitt werden die Optionen und Ausgabefelder erläutert, die für die CPU relevant sind.
Drei der möglichen ps -Ausgabespalten geben die CPU-Auslastung auf unterschiedliche Weise an.
- Spalte
- Wert:
- C
- Kürzlich verwendete CPU-Zeit für den Prozess (in Taktgebereinheiten).
- TIME
- Die gesamte CPU-Zeit, die vom Prozess seit seinem Start verwendet wurde (in Minuten und Sekunden).
- %CPU
- Die gesamte CPU-Zeit, die vom Prozess seit seinem Start verwendet wurde, dividiert durch die abgelaufene Zeit seit dem Start des Prozesses. Diese Zeit ist ein Maß für die CPU-Abhängigkeit des Programms.
CPU-intensiv
# ps -ef | egrep -v "STIME|$LOGNAME" | sort +3 -r | head -n 15 UID PID PPID C STIME TTY TIME CMD
mary 45742 54702 120 15:19:05 pts/29 0:02 ./looper
root 52122 1 11 15:32:33 pts/31 58:39 xhogger
root 4250 1 3 15:32:33 pts/31 26:03 xmconsole allcon
root 38812 4250 1 15:32:34 pts/31 8:58 xmconstats 0 3 30
root 27036 6864 1 15:18:35 - 0:00 rlogind
root 47418 25926 0 17:04:26 - 0:00 coelogin <d29dbms:0>
bick 37652 43538 0 16:58:40 pts/4 0:00 /bin/ksh
bick 43538 1 0 16:58:38 - 0:07 aixterm
luc 60062 27036 0 15:18:35 pts/18 0:00 -kshDie Spalte (C) Gibt die zuletzt verwendete CPU an Der Prozess des Schleifenprogramms leitet die Liste. DerCWert kann die CPU-Auslastung des Schleifenprozesses minimieren, da der Scheduler die Zählung bei 120 stoppt. Bei einem Multithread-Prozess gibt dieses Feld die Summe des CP an, das für alle Threads in diesem Prozess aufgelistet ist.
ps -lmo THREAD -p 8060956
USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND
root 8060956 6815882 - A 720 120 0 - 200001 pts/0 - ./a.out
- - - 8716483 R 120 120 0 - 400000 - - -
- - - 17105017 R 120 120 0 - 400000 - - -
- - - 24182849 R 120 120 0 - 400000 - - -
- - - 24510589 R 120 120 0 - 400000 - - -
- - - 30277829 R 120 120 0 - 400000 - - -
- - - 35913767 R 120 120 0 - 400000 - - -In der Spalte CP gibt der Wert 720 die Summe der einzelnen Threads an, die unter diesem Wert aufgelistet sind, d. h. (5 * 120) + (120).CPU-Zeitverhältnis
Der Befehl ps , der in regelmäßigen Abständen ausgeführt wird, zeigt die CPU-Zeit unter demTIMESpalte und das Verhältnis von CPU-Zeit zu Echtzeit unter der%CPUentsprechenden Spalte hinzu. Suchen Sie nach den Prozessen, die die Nutzung dominieren. Die Optionen au und v liefern ähnliche Informationen zu Benutzerprozessen. Die Optionen aux und vg zeigen sowohl Benutzer-als auch Systemprozesse an.
# ps au
USER PID %CPU %MEM SZ RSS TTY STAT STIME TIME COMMAND
root 19048 24.6 0.0 28 44 pts/1 A 13:53:00 2:16 /tmp/cpubound
root 19388 0.0 0.0 372 460 pts/1 A Feb 20 0:02 -ksh
root 15348 0.0 0.0 372 460 pts/4 A Feb 20 0:01 -ksh
root 20418 0.0 0.0 368 452 pts/3 A Feb 20 0:01 -ksh
root 16178 0.0 0.0 292 364 0 A Feb 19 0:00 /usr/sbin/getty
root 16780 0.0 0.0 364 392 pts/2 A Feb 19 0:00 -ksh
root 18516 0.0 0.0 360 412 pts/0 A Feb 20 0:00 -ksh
root 15746 0.0 0.0 212 268 pts/1 A 13:55:18 0:00 ps au(process CPU time / process duration) * 100Stellen Sie sich zwei Prozesse vor: Der erste startet und läuft fünf Sekunden, wird aber nicht beendet; der zweite startet und läuft fünf Sekunden, wird aber nicht beendet. Der Befehl ps zeigt jetzt 50 Prozent an.%CPUfür den ersten Prozess (fünf Sekunden CPU für 10 Sekunden verstrichene Zeit) und 100 Prozent für die Sekunde (fünf Sekunden CPU für fünf Sekunden verstrichene Zeit).
Auf einem SMP wird dieser Wert durch die Anzahl der verfügbaren CPUs auf dem System dividiert. Wenn Sie auf das vorherige Beispiel zurückblicken, ist dies der Grund, warum die%CPUDer Wert für den Prozess cpubound überschreitet nie 25, da das Beispiel auf einem Vier-Wege-Prozessorsystem ausgeführt wird. Der Prozess cpubound verwendet 100 Prozent eines Prozessors, aber der%CPUWert wird durch die Anzahl der verfügbaren CPUs dividiert.
Option THREAD
# ps -mo THREAD
USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND
root 20918 20660 - A 0 60 1 - 240001 pts/1 - -ksh
- - - 20005 S 0 60 1 - 400 - - -DerTIDSpalte zeigt die Thread-ID, dieBNDSpalte zeigt Prozesse und Threads an, die an einen Prozessor gebunden sind.
Es ist normal, einen Prozess mit dem Namenkproc(PID 516 in Betriebssystemversion 4) CPU-Zeit verwenden. Wenn es keine Threads gibt, die während einer Zeitscheibe ausgeführt werden können, ordnet der Scheduler die CPU-Zeit für diese Zeitscheibe diesem Kernelprozess (kproc) zu, der als idle oder wait kproc bezeichnet wird. SMP-Systeme verfügen über einen inaktiven kproc für jeden Prozessor.