Linux (allgemein)

ID #1243 Prozesse und Speicher überwachen

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 Programm free gibt Auskunft, wie sich die Speicherverteilung verhält.
    Überwiegend sind die Daten mit denen von top identisch.
  • vmstat
    Etwas detailierter als free 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:

 

sozial Bookmarking
Bookmarken bei YIGG Bookmarken bei Mister-Wong Bookmarken bei Icio Bookmarken bei del.icio.us Bookmarken bei Technorati Bookmarken bei Furl Bookmarken bei Spurl Bookmarken bei Yahoo Bookmarken bei Google

huschi, zuletzt 2007-07-19 16:30     Artikel ausdrucken Artikel weiterempfehlen Als PDF-Datei anzeigen

Dieser Inhalt ist unter der Creative-Commons Lizenz lizensiert.

Probleme bitte im Server-Support-Forum diskutieren.

überflüssig 1 2 3 4 5 wertvoll  
Durchschnittliche Bewertung:   4.75 von 5 (4 Bewertungen)

Artikel kommentieren