
Abbildung 2: Neben gängigen CPU-Metriken zeigt das Beispiel den Prozess, der am meisten Rechenzeit beansprucht.
Das Werkzeug fasst übrigens die Auslastung aller CPUs zusammen, wenn das System über mehrere Prozessoren und Kerne verfügt. Wünschen Sie eine detaillierte Ansicht, greifen Sie auf den Schalter -C zurück, dem Sie eine kommaseparierte Liste der zu überwachenden Cores mitgeben.
Die erste Spalte der CPU-fixierten Ausgabe beschreibt die für Messwerkzeuge typischen Werte: usr und sys geben an, wie viel Prozent der genutzten CPU-Zeit die Programme im User- beziehungsweise Kernel-Space jeweils verbrauchen, während idl die Gesamtheit aller ungenutzten CPU-Ressourcen beschreibt (ebenfalls wieder in Prozent).
Besonders der letzte Wert besitzt bereits eine gewisse Aussagekraft – fällt relativ hoch aus, befindet sich das System im Leerlauf. Die Werte unter dem Kürzel wai hingegen zeigen auf, ob Programme derzeit warten. Tauchen hier hohe Zahlen auf, gibt es möglicherweise irgendwo einen Flaschenhals.
Die Kürzel hiq und siq stehen für die Anzahl der Interrupts durch Hardware oder Software. Eine hohe Anzahl an Interrupts deutet auf eine starke Nutzung des Systems hin, muss aber nicht zwingend ein Problem darstellen.
Der Systembereich gliedert sich in die Spalten int für die Gesamtzahl aller Interrupts und csw für Kontextumschaltungen auf. Bei Letzteren handelt es sich um Vorgänge, bei denen die CPU das Ausführen eines Prozesses zugunsten eines anderen Vorgangs pausiert (Multitasking). Fällt diese Zahl deutlich höher aus als sonst, ist das System womöglich aus Sicht der CPU mit dem Abarbeiten der anstehenden Aufgaben überfordert. Das gilt aber nur, wenn der zuvor genannte Idle-Wert nahe bei null liegt.
Der dritte große Bereich load-avg bezeichnet die ermittelte Systemauslastung aus Sicht des Kernels für die letzten 60 Sekunden, fünf Minuten und 15 Minuten. Der Load-Wert dient unter Linux als gängiger Indikator, ob ein System überlastet ist oder sich im Leerlauf befindet. Die Software ermittelt die Werte, in dem sie prüft, wie viele Prozesse auf einer bestimmten CPU auf Rechenzeit warten. Die nächste Spalte proc hat damit nur bedingt zu tun, da sie nur besagt, wie viele Prozesse gerade laufen.
Die letzte Spalte mit der Kennung most-expensive zeigt, welcher Prozess gerade die meisten CPU-Ressourcen verschlingt. Solange die Load kleiner ausfällt als die Anzahl der zur Verfügung stehenden Kerne, befindet sich der Rechner eher im Halbschlaf. Bei einer Load von mehr als dem Doppelten der vorhandenen Cores läge jedoch ein Problem vor – die CPU käme mit dem Abarbeiten nicht mehr hinterher.
Bei allen Angaben in einer Zeile handelt es sich um eine Momentaufnahme für den Zeitrahmen der letzten Sekunde. Treten beim Betrachten der CPU-Metriken Überraschungen auf, lohnt sich ein genauerer Blick auf die Speicherauslastung.
Speicherfresser
Gerade bei älteren Systemen ist die Kapazität des Arbeitsspeichers eng begrenzt. Reagiert das System nicht wie gewohnt und wollen die CPU-Metriken nicht allzuviel verraten, kommt unter Umständen ein speicherhungriger Prozess als Verursacher infrage. Rufen Sie Dstat dann mit den Parametern -g -m -s --top-mem auf, um einen Blick auf die entsprechenden Werte zu werfen (Abbildung 3).
Die relevanten Bereiche Paging (-g), Memory usage (-m), Swap (-s) und Most expensive (--top-mem) beziehen sich auf den virtuellen System- sowie den realen Arbeitsspeicher, der Anwendungen für deren Aufgaben bereitsteht.
In der Regel benötigen leerlaufende Prozesse den Speicher jedoch nicht permanent, weswegen der Kernel diesen in entsprechende Speicherbereiche (“Pages”) auf die Festplatte auslagert (“Page-out”, siehe zweite Spalte in Abbildung 3). Nach diesem Vorgang steht mehr Arbeitsspeicher für andere Vorgänge bereit. Umgekehrt liest ein System den Speicher wieder ins RAM (“Page-in”, siehe erste Spalte in Abbildung 3), sobald die Anwendung ihn benötigt.
Der Bereich Memory Usage hingegen zeigt Metriken für den physikalischen Arbeitsspeicher: Wie viel RAM befindet sich gerade im Einsatz (used)? Wie viele Daten warten darauf, dass das System sie noch auf die Festplatte schreibt (buff)? Wie viele Daten warten darauf, dass das System sie von Speichermedien ins RAM einliest (cach), und wie viel RAM steht insgesamt noch bereit (free)?
Generell gilt: Je höher der Wert in der Spalte used und je kleiner die Zahl bei free, desto stärker nehmen die Programme den Arbeitsspeicher des Systems in Anspruch. Tendiert die freie RAM-Kapazität gegen null, beginnt der Kernel mit dem Swapping. Das bedeutet schlicht, dass er von Prozessen reservierten Arbeitsspeicher auf die Festplatte schreibt. Da diese deutlich langsamer arbeitet als der Hauptspeicher, verlangsamt sich die Geschwindigkeit des gesamten Systems entsprechend. Der dritte Bereich der Ausgabe in Abbildung 3 zeigt dazu, welche Datenmengen der Kernel gerade ausgelagert hat (used) und wie viel Kapazität noch für das Swapping bereitsteht (free).
Für eine schnelle Auskunft sorgt zudem der Schalter --top-mem, der den größten Speicherfresser anzeigt. Für Abbildung 3 kam das Benchmarking-Tool Mbw [6] zum Einsatz, das die Anwendung Compiz in Sachen Speicherbedarf ablöst. Dstat zeigt, wie der Kernel sich vermehrt des Pagings bedient und zudem immer mehr Daten in den Swap-Bereich auslagert. Dementsprechend langsam reagierte das System hier beim Aufruf von Dstat.
Beim Betrachten der Speicherauslastung gilt: Je mehr aktives Paging und Swapping stattfindet, desto langsamer arbeitet das System. Besonders das Swapping beeinträchtigt die zur Verfügung stehende Bandbreite der Festplatten.






