Problem
Gerade Linux-Neulinge haben ein Problem sich eine vernünftige Übersicht über ihre Server-Auslastung zu erhalten. Manchmal werden sogar die richtigen Tools benutzt aber die Werte falsch interpretiert.
Eins der größten Mythen ist z.B. die Load-Statistik...
Erklärungen:
Fangen wir mit den Tools selbst an:
top
Dieses Tools verspricht eine "dynamic real-time view of a running system".
Dies erreicht man aber nur mit ein klein wenig Erfahrung und kann Probleme und Optimierungen nur durchführen wenn man die Werte richtig interpretiert.ps
Hier wird eine Momentaufnahme der aktuellen Prozesse angezeigt. Mit verschiedenen Parametern kann man sich die Anzeige nach der aktuellen Bedürfnissen anpassen.free
Das Programmfree
gibt Auskunft, wie sich die Speicherverteilung verhält.
Überwiegend sind die Daten mit denen von top identisch.vmstat
Etwas detailierter alsfree
gibt es auch Daten über die CPU-Auslastung.
Zum Teil sind die Daten mit denen von top identisch.
top
Eine typische Ausgabe von top
bei SuSE:
top - 15:42:43 up 253 days, 2:51, 6 users, load average: 1.36, 1.30, 1.70
Tasks: 145 total, 1 running, 142 sleeping, 0 stopped, 2 zombie
Cpu(s): 4.3% us, 0.5% sy, 0.0% ni, 95.0% id, 0.2% wa, 0.0% hi, 0.0% si
Mem: 2075252k total, 1791644k used, 283608k free, 17072k buffers
Swap: 2048276k total, 401480k used, 1646796k free, 1373048k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11338 root 16 0 1936 1072 1712 R 0.3 0.1 0:00.23 top
1 root 16 0 588 68 444 S 0.0 0.0 0:48.50 init
Häufige Fragen hierbei: Was bedeuten die vielen Abkürzungen?
us
: CPU-Anteil an User-Prozessen
sy
: CPU-Anteil an System-/Kernel-Prozessen
ni
: CPU-Nice-Time (Prozesse mit geringer Priorität)
id
: CPU-Idle-Time (Leerlauf)
wa
: CPU-Wartezeit auf externe Ereignisse (I/O)
hi
: Hard Interrupts
si
: Soft Interrupts
ps
Das Programm ps
wird meist mit den Parametern -aux
aufgerufen. Dies bedeutet alle Terminal Prozesse
, Username
und alle Prozesse ohne Terminal
.
Dann kommt manchmal noch ein f
dazwischen, welches die Prozesse in einer Baumstruktur darstellt.
Typische Beispiele:
ps aux ps auxf ps aux | less ps aux | grep mail
free
Detaliertere Auskunft über die Speicherbelegung.
total used free shared buffers cached
Mem: 126096 60792 65304 0 16268 16068
-/+ buffers/cache: 28456 97640
Swap: 248996 136324 112672
Das ungenutzte Speicherbereiche geswappt werden ist übrigens normal und noch lange kein Grund zur Panik.
Genauso normal wie daß der Hauptspeicher meistens rand voll ist. Linux nutzt nämlich einen dynamischen HD-Cache. Jenachdem wieviel Speicher noch frei ist werden Festplattenzugriffe im Speicher zwischen gelagert.
Der Speicher wird erst eng, wenn sowohl der Haupt als auch der Swap-Speicher ständig gefüllt ist. Dann ist nämlich kein Platz mehr für neue Prozesse.
vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 136324 63748 15232 18664 3 1 6 1 1 2 4 0 95 0
Die verwendeten Abkürzungen sind bereits oben bei top
.
Load
Für viele ist hier der wichtigste Wert load average
. Dieser ist aber nur bei richtiger Interpretation wirklich aussagekräftig:
Erstmal ist es wichtig zu verstehen, daß der Load keine Momentaufnahme ist sondern ein Mittelwert der Prozessauslastung über die Zeit.
Gemeint ist übrigens wirklich die "Prozessauslastung" und nicht die "CPU-Auslastung"!
Er wird berechnet anhand der run-queue
. Dies ist die Kernel interne Prozess-Warteschlange. Ein Load von 100% bedeutet, daß in diesem Zeitraum eine CPU zu 100% ausgelastet sein könnte. Was sie aber meistens nicht der Fall ist weil die Prozesse nicht die erwartete Auslastung nutzt.
Bei top
werden immer 3 Load-Werte angezeigt:
Der Wert über eine Minute, über 5 Minuten und über 15 Minuten.
Wer einen Server mit 2 CPU's oder Dual-Core hat, kann sich auf einen Kontrollwert von 200% einstellen.
Ausschlaggebend ob ein Server wirklich überlastet ist, wäre eine Beobachtung über einen größeren Zeitraum. Hierzu nimmt man entsprechende Tool, die auch eine grafische Ausgabe ermöglichen wie z.B. MRTG.
Weiterführende Links:
- Load-Artikel bei Wikipedia