Wie lese ich htop?

9

Ich habe Probleme, die Informationen zu verstehen, die durch htopden beliebten Ersatz für den Linux-Befehl top angezeigt werden .

htop screen dump

Im obigen Screenshot sind viele Java-Instanzen aufgeführt, aber nur die übergeordnete verwendet die CPU-Zeit. Was sind die anderen?

Warum zeigen die CPU-Auslastungsbalken so ausgelastete Kerne an, wenn in der Spalte CPU% nicht über alle Prozesse hinweg viel passiert? Tatsächlich bewegen sie sich die meiste Zeit ohne Korrelation.

Warum ist der Lastdurchschnitt oben rechts, von dem ich annehme, dass er eine dreistufige Historie aufweist, so niedrig, wenn die Kerne fast immer grün sind und beschäftigt aussehen?

Wäre jemand so freundlich zu erklären, wie man diese Informationen liest?

Vielen Dank!

Luke Puplett
quelle
Ich habe einige Änderungen vorgenommen, die sehr hilfreich sind. Zeigen Sie Threads in einer anderen Farbe an, zeigen Sie Threadnamen an, aktualisieren Sie Prozessnamen beim Aktualisieren und ändern Sie die Verzögerung meistens auf 2/10 Sekunden. Die Standardaktualisierungsgeschwindigkeit zeigt nur eine massive Verzögerung zwischen den CPU-Anzeigen und den Prozessen.
Luke Puplett
1
Zumindest für den Lastdurchschnitt ist das nicht unbedingt ein niedriger Wert. Die Last ist im Wesentlichen ein Indikator dafür, ob das System warten muss, um etwas zu tun. Ein akzeptabler Wert ist kleiner als die Anzahl der Kerne, in diesem Fall 4. Diese Durchschnittswerte sind also angemessen. Sie sind die letzten 1, 5 und 15 Minuten. Weitere Informationen finden Sie unter [Wikipedia] ( en.wikipedia.org/wiki/Load_(computing))
ssmy

Antworten:

5
  1. In Bezug auf "Load" und CPU% enthält Wikipedia eine ausführliche Erklärung und ein Beispiel. Es folgt ein teilweises Zitat

    Ein inaktiver Computer hat eine Lastenummer von 0, und jeder Prozess, der die CPU verwendet oder auf diese wartet (die Warteschlange für das Bereitstellen oder die Ausführungswarteschlange), erhöht die Lastenummer um 1. Die meisten UNIX-Systeme zählen nur Prozesse, die ausgeführt werden (auf der CPU) oder ausgeführt werden können (warten auf) CPU) Zustände. Linux enthält jedoch auch Prozesse in unterbrechungsfreien Ruhezuständen (die normalerweise auf Festplattenaktivität warten). Dies kann zu deutlich unterschiedlichen Ergebnissen führen, wenn viele Prozesse aufgrund eines ausgelasteten oder blockierten E / A-Systems in der E / A blockiert bleiben. Dies umfasst beispielsweise das Blockieren von Prozessen aufgrund eines NFS-Serverausfalls oder das Verlangsamen von Medien (z. B. USB 1.x-Speichergeräten). Solche Umstände können zu einem erhöhten Lastdurchschnitt führen, der keine tatsächliche Zunahme der CPU-Auslastung widerspiegelt (aber dennoch eine Vorstellung davon gibt, wie lange Benutzer warten müssen).

    Systeme berechnen den Lastdurchschnitt als exponentiell gedämpften / gewichteten gleitenden Durchschnitt der Lastzahl. Die drei Werte des Lastdurchschnitts beziehen sich auf die letzten eine, fünf und fünfzehn Minuten des Systembetriebs.

    Bei Systemen mit einer CPU, die an die CPU gebunden sind, kann man sich den Lastdurchschnitt als Prozentsatz der Systemauslastung während des jeweiligen Zeitraums vorstellen. Bei Systemen mit mehreren CPUs muss die Anzahl durch die Anzahl der Prozessoren geteilt werden, um einen vergleichbaren Prozentsatz zu erhalten.

    Die Balken sind möglicherweise beschäftigt, bewegen sich jedoch nie zu 100%, was darauf hinweist, dass die CPU / der Kern voll ausgelastet ist. Der Balken ist nur eine Visualisierung der CPU-Auslastung in%, die bei 27%, 26,5%, 24,5%, 24,7% und 71,7% liegt. Alle CPU-Kerne haben noch Strom zum "Sparen". Sie sind zu diesem Zeitpunkt alle unterausgenutzt.

    Ein voll ausgelastetes 5-Kern / CPU-System hat eine Last von 5 oder mehr.

  2. Bei den Java-Zeilen handelt es sich um übergeordnete (PID = 5073) und untergeordnete Prozesse. Ich kann nicht erklären, warum die Eltern die meiste CPU-Zeit ansammeln. Das hängt wirklich von der internen Logik des Programms ab. Laut TIME + verbrauchten diese untergeordneten Prozesse jedoch CPU-Zeit, wobei der letzte (PID = 5074) am meisten akkumulierte.

John Siu
quelle
Ist es möglich, dass die untergeordneten Prozesse der JVM-Threadpool sind? Wenn ich die Option zum Anzeigen von Threadnamen einstelle, werden alle gleich benannt. Ich bin ein Windows + .NET-Programmierer, fyi.
Luke Puplett
Ja, es ist möglich, dass sie Thread sind.
John Siu