• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

prozentuale CPU-Auslastung interpretieren

Hallo,

ich interessiere mich für die Serverauslastung.
Über uptime habe ich gelernt, dass man pauschal nicht sagen kann, ab welchem Wert es ressourcentechnisch bedrohlich wird. Oft pendelt der Wert auf meinem Server zwischen 0,8 und 2,0.
Jetzt habe ich gelesen, dass man die CPU-Auslastung in Prozentzahlen erhalten kann.
Code:
top -n1 | grep Cpu
Ich erhalte stets: "9.9%us, 4.5%sy, 0.0%ni, 84.5%id, 0.3%wa, 0.0%hi, 0.3%si, 0.5%st"

Gilt dieser Wert pro CPU-Kern (ich habe 8 Prozessoren à 2992.498 MHz) oder als gesamtes? Ich habe gelesen, dass bei z.B. 200% nur 2 Prozessorkerne ausgelastet sind, stimmt das?
Im cPanel beim Process Manager sehe ich, dass mysql immer ca. 80% CPU beansprucht, auch wenn manchmal sehr wenige Datenbankabfragen entstehen (die Optimierung und Analyse der Abfragen habe ich soweit gut drauf).
 
A

Anonymous

Gast
die 2. Zeile von Top ist die Summen Auswertung, bei 100% ist dort Schluss. Diese ist übrigens beim Aufruf von "top -n1" komplett daneben um nicht zu sagen falsch. Dieses würdest du sofort sehen wenn du "top -n2" startest und die ersten Ausgaben mit den 2. Ausgaben bzw. allen eventuell folgenden vergleichen würdest.

robi
 
Danke für deine Antwort.

robi schrieb:
Diese ist übrigens beim Aufruf von "top -n1" komplett daneben um nicht zu sagen falsch. Dieses würdest du sofort sehen wenn du "top -n2" startest und die ersten Ausgaben mit den 2. Ausgaben bzw. allen eventuell folgenden vergleichen würdest.
Code:
root@s1 [~]# top -n1 | grep Cpu
Cpu(s): 11.7%us,  4.4%sy,  0.0%ni, 82.7%id,  0.2%wa,  0.0%hi,  0.5%si,  0.4%st
root@s1 [~]# top -n2 | grep Cpu
Cpu(s): 11.7%us,  4.4%sy,  0.0%ni, 82.7%id,  0.2%wa,  0.0%hi,  0.6%si,  0.4%st
Cpu(s): 15.2%us,  5.0%sy,  0.0%ni, 78.4%id,  0.0%wa,  0.0%hi,  1.3%si,  0.1%st
Wie meinst du das? Das kommt mir soweit alles in Ordnung vor?!

robi schrieb:
die 2. Zeile von Top ist die Summen Auswertung, bei 100% ist dort Schluss.
Die zweite Zeile von Top ist bei mir:
Tasks: 269 total, 2 running, 267 sleeping, 0 stopped, 0 zombie

Ich habe in der Zwischenzeit gelesen dass %id den freien CPU-Platz anzeigt, d.h. der Server ist nicht stark ausgelastet wenn der Wert bei 70 % ist?
 
A

Anonymous

Gast
3. Zeile stimmt schon

beim Start von top wird die erste Ausgabe meist nicht sehr korrekt sein und sich von den weiteren Ausgaben oft sehr stark unterscheiden.
Bei wenig Last auf dem Rechner wird die erste Summe oft bedeutend mehr Last anzeigen, und bei starker Auslastung wird oftmals in der ersten Ausgabe bedeutend weniger angezeigt.

Wenn man diese top auswerten will ist es ratsam nicht die erste Ausgabe zu nehmen, sondern einen Zeitintervall einzustellen( oder sich mit den 3 s default Wert begnügen) und dann die 2. oder 3. Ausgabe zu verwenden.
zB
Code:
top -bw92i4n2d5  | grep Cpu | tail -1
es gibt noch einige andere top-Varianten, manchmal ist es in Scripten ratsamer eine solche zu benuzten, oder die Daten selbst aus dem /proc Verzeichnis auszulesen.
Wenn man weniger genau, dafür aber mehr an der Durchschnittlichen Last oder Tendenzen der letzten Minuten interessiert ist, ist es auch möglich gleich die "load average" oder "Durchschnittslast" zu untersuchen, diese ist zwar schwieriger zu interpretieren und auch abhängig von der Anzahl der logischen CPUs aber dafür leicher zu gewinnen, da sie auch einfach mit uptime zu gewinnen ist.

robi
 
Ah, ich verstehe. =)
Der Parameter w ist meiner Konsole nicht bekannt, wenn ich es weglasse erhalte ich eine brauchbare Ausgabe.

Was mir noch nicht ganz klar ist, ist folgendes:
Kuckuck schrieb:
Ich habe in der Zwischenzeit gelesen dass %id den freien CPU-Platz anzeigt, d.h. der Server ist nicht stark ausgelastet wenn der Wert bei 70 % ist?
Kuckuck schrieb:
Im cPanel beim Process Manager (bzw. auch Befehl top) sehe ich, dass mysql immer ca. 80% CPU beansprucht, auch wenn manchmal sehr wenige Datenbankabfragen entstehen (die Optimierung und Analyse der Abfragen habe ich soweit gut drauf).
 
A

Anonymous

Gast
-w legt die maximale Länge der Ausgabezeilen fest, per default ist es die Zeichenbreite des Konsolfensters. In Scripten gibt es hier manchmal seltsame Probleme bei der Auswertung solcher top-Ausgaben, wenn man das Script zB in sehr kleinen XTerminal Fenstern startet, deshalb hier wenn möglich bei solchen Geschichten gleich eine maximale Ausgabezeilenlänge vorgeben.

id oder "idle" ist quasi die Leerlaufsumme aller CPUs.
Sind mehr als eine logische CPU vorhanden kann ein Einzelprozess 100% CPU ( es ist auch möglich das hier mehr als 100% stehen) anzeigen, und dennoch ein beträchtlicher idle-Wert vorhanden sein. Dann sind eben die anderen CPUs nicht alle beschäftigt.

Mehr als 100% geht hier deshalb, da in der default Anzeige alle Threads eines Prozesses zusammengezählt werden, und nicht einzeln dargestellt werden. Sind mehrere Threads eines Prozesses stark beschäftigt, laufen diese natürlich auf verschiedenen CPUs, so das die Summe größer als 100% einer CPU sein kann. Bei einer Quadcore CPU mit Hyperthreading sind also durchaus in top bei sehr starker Auslastung bis zu 8 Prozesse zu sehen die gleichzeitig jeweils 80% und mehr CPU verbraten können. Kommt auf die Programme an die man dort laufen lässt, ein Normaluser auf einem Normal-PC selbst mit so potenten CPUs wird vor dem Eintreffen einer solchen Situation aber in der Regel vorher schon am hohen wa-Wert scheitern, das ist die Zeit die von der CPUs auf Daten IO gewartet werden muss. Also meist auf Schreiben/Lesen von Platte.

robi
 
Oben