Wie Sie selbst gesagt haben, können Sie klicken H, um Benutzer-Threads anzuzeigen.
Berechnen wir die CPU-Auslastung nur zum späteren Nachschlagen (und zum Spaß)!
Ein bisschen Hintergrund:
In einem modernen Betriebssystem gibt es einen Scheduler. Ziel ist es sicherzustellen, dass alle Prozesse und ihre Threads einen angemessenen Anteil an Rechenzeit erhalten. Ich werde nicht zu viel planen (es ist wirklich kompliziert). Aber am Ende gibt es so etwas wie eine Run-Warteschlange . Hier reihen sich alle Anweisungen aller Prozesse aneinander, um auf die Ausführung zu warten.
Bei jedem Prozess werden die "Aufgaben" in die Ausführungswarteschlange gestellt. Sobald der Prozessor bereit ist, werden sie entfernt und ausgeführt. Wenn ein Programm beispielsweise in den Ruhezustand wechselt, entfernt es sich aus der Ausführungswarteschlange und kehrt zum "Ende der Zeile" zurück, sobald es wieder ausgeführt werden kann.
Das Sortieren in dieser Warteschlange hat mit der Priorität der Prozesse zu tun (auch als "netter Wert" bezeichnet - dh ein Prozess ist nett zu Systemressourcen).
Die Länge der Warteschlange bestimmt die Auslastung des Systems. Eine Last von 2,5 bedeutet beispielsweise, dass für jeden Befehl, den die CPU in Echtzeit verarbeiten kann, 2,5 Befehle vorhanden sind .
Unter Linux wird diese Last übrigens in 10-ms-Intervallen berechnet (standardmäßig).
Nun zu den Prozentwerten der CPU-Auslastung:
Stellen Sie sich vor, Sie haben zwei Uhren, eine heißt t
und repräsentiert Echtzeit . Es misst eine Sekunde pro Sekunde. Die andere Uhr rufen wir an c
. Es wird nur ausgeführt, wenn eine Verarbeitung erforderlich ist. Das heißt, nur wenn ein Prozess etwas berechnet, läuft die Uhr. Dies wird auch als CPU-Zeit bezeichnet. Jeder Prozess auf dem System hat einen davon.
Die Prozessorauslastung kann jetzt für einen einzelnen Prozess berechnet werden:
oder für alle Prozesse:
Auf einem Multi-Core-Computer kann dies natürlich zu einem Wert von 3,9 führen, da die CPU bei perfekter Nutzung jede Sekunde eine Berechnung im Wert von vier Sekunden berechnen kann.
Wikipedia bietet dieses Beispiel:
Eine Softwareanwendung, die auf einem 6-CPU-UNIX-Computer ausgeführt wird, erstellt drei UNIX-Prozesse, um die Benutzeranforderungen zu erfüllen. Jeder dieser drei Prozesse erstellt zwei Threads. Die Arbeit der Softwareanwendung wird gleichmäßig auf 6 unabhängige Ausführungsthreads verteilt, die für die Anwendung erstellt wurden. Wenn kein Warten auf Ressourcen erforderlich ist, wird die Gesamt-CPU-Zeit voraussichtlich sechsmal in Echtzeit verstrichen sein.
Hier ist ein kleiner Python-Ausschnitt, der dies tut
>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %
In einer perfekten Welt könnte man daraus schließen, dass die Systemlast 100 - 66,93 = 33,1% beträgt. (In Wirklichkeit wäre dies jedoch falsch, da komplexe Dinge wie E / A-Wartezeiten, das Planen von Ineffizienzen usw. erforderlich sind.)
Im Gegensatz zur Last führen diese Berechnungen immer zu einem Wert zwischen 0 und der Anzahl der Prozessoren, dh zwischen 0 und 1 oder 0 bis 100%. Es gibt jetzt keine Möglichkeit mehr zwischen einem Computer, auf dem drei Aufgaben mit 100% CPU ausgeführt werden, und einem Computer, auf dem eine Million Aufgaben ausgeführt werden und an dem kaum noch eine Arbeit ausgeführt wird, auch nicht zu 100%. Wenn Sie beispielsweise versuchen, eine Reihe von Prozessen auf vielen Computern auszugleichen, ist die CPU-Auslastung nahezu nutzlos. Laden ist das, was Sie dort wollen.
In Wirklichkeit gibt es mehr als eine dieser Verarbeitungszeituhren. Es gibt zum Beispiel eine, die auf E / A wartet. Sie können also auch die E / A-Ressourcennutzung berechnen.
Dies mag in Bezug auf die ursprüngliche Frage nicht hilfreich gewesen sein, aber ich hoffe, es ist interessant. :) :)