Fünf Performance-Befehle für Linux, die jeder Administrator kennen sollte

Performance-Probleme auf Linux-Hosts lassen sich oft mit einfachen Befehlen unter Linux beheben.

Performance-Management auf Linux-Hosts ist für viele wie schwarze Magie. Viele System-Administratoren wagen sich nur selten über einfachste Maßnahmen hinaus und lösen scheinbare Performance-Probleme lieber, indem sie mehr Hardware, mehr Arbeitsspeicher und mehr CPU-Leistung anschaffen. Dabei können einige einfache Befehle eine enorme Menge an Details über Ihren Host offenbaren und Ihnen dabei helfen, Performance-Probleme schnell und effizient zu lösen.

1. top

Als Erstes sollten System-Administratoren sich mit dem Befehl top vertraut machen. Er zeigt die Tasks, die aktuell vom Kernel bedient werden sowie grobe Statistiken über den Status Ihres Hosts. Als Voreinstellung werden diese Daten automatisch alle fünf Sekunden aktualisiert, was sich aber anders konfigurieren lässt.

Der top-Befehl bietet zudem viele weitere Möglichkeiten (von denen wahrscheinlich niemand auch nur die Hälfte nutzt). Als ersten Parameter können Sie h für Hilfe ausprobieren (auch die man-Seite für die Anleitung ist äußerst gehaltvoll). Die Hilfe erklärt schnell, wie Sie Felder hinzufügen und weglassen sowie die Reihenfolge der Sortierung ändern können. Mit k bzw. r können Sie auch bestimmte Prozesse beenden oder priorisieren.

Im Einzelnen zeigt der top-Befehl die aktuelle Uptime, die System-Auslastung, die Zahl der Prozesse, Memory-Nutzung und diejenigen Prozesse, die am meisten CPU-Leistung in Anspruch nehmen. Hinzu kommen noch Informationen über die einzelnen Prozesse wie die ausführenden Nutzer und die ausgeführten Befehle.

2. vmstat

Der Befehl vmstat gibt Ihnen eine Übersicht über die aktuelle Auslastung von CPU, I7O, Prozessen und Arbeitsspeicher. Ebenso wie bei top gibt es eine automatische Aktualisierung. Der Befehl lässt sich wie folgt nutzen:

$ vmstat 10

Hier wird als Zeit zwischen den Aktualisierungen zehn Sekunden vorgegeben. Der Befehl gibt die Ergebnisse der Prüfung aus, bis er mit Ctrl-C beendet wird (oder bis ein in der Kommandozeile angegebenes Zeit-Limit erreicht ist). Manche Administratoren leiten diese kontinuierliche Ausgabe in Dateien um, mit denen sich Trend-Analysen vornehmen lassen. Doch wie Sie weiter unten nachlesen können, gibt es dafür bessere Methoden.

Die ersten Spalten zeigen Prozesse, wobei r diejenigen angibt, die auf Laufzeit warten, und b diejenigen, die in einem nicht unterbrechbaren Schlaf-Zustand sind. Wenn hier mehrere Prozesse warten, bedeutet das, dass Sie wahrscheinlich irgendwo einen Engpass haben. Die Spalten weiter rechts beziehen sich auf den Arbeitsspeicher – virtuellen, freien, Buffer und Cache. Anschließend folgen Spalten mit Swap-Informationen, die angeben, wie viel Arbeitsspeicher auf die Festplatte ausgelagert beziehungsweise von ihr zurückgeholt wurde. Die nächsten Spalten gehören zu I/O und zeigen Blocks, die von Block-Devices empfangen oder dorthin geschickt wurden.

Die letzten beiden Spalten schließlich beziehen sich auf System und CPU. Die System-Spalten zeigen die Zahl der Interrupts und Kontext-Wechsel pro Sekunde. Die Spalten zur CPU sind besonders nützlich. Jeder Eintrag ist als Prozentwert der gesamten CPU-Zeit angelegt. Die einzelnen Punkte:

us: Zeitanteil für Ausführung von Nutzer-Tasks/Code

sy: Zeitanteil für Ausführung von Kernel oder Systemcode

id: Leerlaufzeit

wa: Zeitanteil für Warten auf I/O

st: von einer virtuellen Maschine gestohlener Zeitanteil

Damit eignet sich der Befehl vmstat gut für das Erkennen von Mustern in der CPU-Auslastung. Bedenken Sie dabei jedoch, dass es bei den Werten eine gewisse Verzögerung gibt und dass kurzfristige CPU-Beobachtung nicht unbedingt viele Informationen erbringt. Für tiefere Einblicke müssen Sie möglicherweise längerfristige Trends analysieren (siehe unten).

3. iostat

Der nächste Befehl ist iostat, enthalten im sysstat-Paket bei Ubuntu und Red Hat/Fedora. Mit ihm lassen sich drei Berichte erzeugen: CPU-Nutzung, Geräte-Nutzung und Nutzung des Netzwerk-Dateisystems. Ohne Angabe von Parametern werden alle drei Berichte ausgegeben, mit -c, -d und -h können Sie die Berichte einzeln anfordern.

Auf dem Bild sehen Sie zwei dieser Berichte. Der erste zeigt die CPU-Nutzung in Prozent nach Kategorien: Nutzer-Prozesse, System-Prozesse, I/O-Wartezeit und Leerlauf.

Der zweite Bericht, über Geräte-Nutzung, zeigt alle an den Host angeschlossenen Geräte einschließlich nützlicher Informationen über Übertragungen pro Sekunde (tps) sowie Block-Lese- und Schreibvorgänge. Dies hilft beim Identifizieren von Performance-Problemen mit Geräten. Um die Statistik in Kilobyte oder Megabyte statt in Blocks zu sehen, was manchmal einfacher zu lesen oder zu verstehen sein kann, können Sie die Parameter -k oder -m verwenden.

Der dritte, hier nicht abgebildete Bericht, enthält relativ ähnliche Informationen wie der zu den Geräten. Sein Inhalt bezieht sich aber statt auf direkt angeschlossene Geräte auf über das Netzwerk eingebundene Dateisysteme.

4. free

Der nächste Befehl, free, zeigt Arbeitsspeicher-Statistiken sowohl für den Hauptspeicher als auch für die Auslagerungsdatei.

Über den Parameter -t können Sie die Gesamtmenge an Arbeitsspeicher anzeigen lassen, wobei -b zur Angabe in Byte und -m zur Angabe in Megabyte führt; voreingestellt sind Kilobyte.

Über den Parameter -s und die Angabe eines Intervalls in Sekunden lässt sich free auch laufend ausführen:

$ free -s 5

In diesem Fall erfolgt alle fünf Sekunden eine Aktualisierung.

5. sar

Auch hierbei handelt es sich um einen Kommandozeilen-Befehl für das Sammeln, Anzeigen und Aufzeichnen von Performance-Daten. Er ist deutlich raffinierter als die bisher beschriebenen und kann Daten auch über längere Zeiträume sammeln und anzeigen. In Red Hat und Ubuntu wird er über das sysstat-Paket installiert. Beginnen wir mit der Ausführung von sar ohne Optionen und schauen wir, was das bewirkt:

$ sar

Die Basis-Ausgabe von sar sind also CPU-Statistik für alle zehn Minuten und ein abschließender Durchschnitt. Letzterer entstammt einer täglichen Statistik-Datei, die alle 24 Stunden gewechselt wird (gespeichert im Verzeichnis /var/log/sa unter dem Namen saxx, wobei xx den Tag der Sammlung angibt). Ebenfalls gesammelt werden Statistiken über Arbeitsspeicher, Geräte, Netzwerk und eine Reihe weiterer Kennzahlen. Mit -b zum Beispiel bekommen Sie Angaben über Block-Devices, mit -n Netzwerk-Daten und mit -r Informationen über Arbeitsspeicher-Nutzung. Um alle Daten anzeigen zu lassen, verwenden Sie -A.

Für längere Daten-Sammlungen können Sie den Output von sar auch in eine andere Datei einfließen lassen. Hierzu dienen der Parameter -o und ein Dateiname, dazu ein Zeit-Intervall zwischen den Daten-Erfassungen (denken Sie daran: auch die können die Performance beeinträchtigen, also machen Sie das Intervall nicht zu kurz) sowie die Zahl der Durchläufe. Wenn Sie die letzte Angabe weglassen, läuft sar durchgängig. Ein Beispiel:

$ sar -A -o /var/log/sar/sar.log 600 >/dev/null 2>&1 &

Damit sammeln wir alle Daten (-A) in der Datei /var/log/sar/sar.log; die Sammlung erfolgt alle 600 Sekunden oder fünf Minuten kontinuierlich und dann im Hintergrund. Wenn wir die gesammelten Daten später angezeigt haben wollen, lässt sich dafür sar mit dem Parameter -f wie folgt verwenden:

$ sar -A -f /var/log/sar/sar.log

Dadurch werden alle während des sar-Jobs gesammelten Daten ausgegeben. Mit Werkzeugen wie ksar oder sar2rrd können Sie die Daten auch grafisch aufbereiten.

Dies war eine sehr kurze Einführung in sar. Mit dem Befehl lassen sich ausgesprochen viele Daten bekommen, und er kann eine leistungsfähige Methode sein, um die Performance Ihrer Hosts zu überprüfen. Für weitere Details über die verfügbaren Kennzahlen empfehle ich einen Blick auf die man-Seite von sar.

In diesem Artikel wurden fünf grundlegende Kommandozeilen-Werkzeuge für die Anzeige von Performance-Daten auf Linux-Hosts vorgestellt. Zusätzlich kann es sich lohnen, sich mit Werkzeugen wie munin und collectd zu beschäftigen, die nicht nur Daten zur Performance sammeln, sondern auch über Anwendungen und Dienste, und auch die Verwendung eigener Plug-ins ermöglichen. Mit beiden Werkzeugen lassen sich zudem grafische Darstellungen erzeugen, so dass Sie Ihre Daten bildhaft anzeigen lassen können.

ÜBER DEN AUTOR: James Turnbull arbeitet als Manager des CERT (Computer Emergency Response Team) bei der National Australia Bank. Er ist ein erfahrener Infrastruktur-Architekt mit einem Hintergrund in Linux/Unix, AS/400, Windows und Storage-Systemen. Zu seinen bisherigen Tätigkeiten zählen Sicherheitsberatung, Design für Infrastruktur-Sicherheit sowie Definition von SLAs und Dienstleistungen, und er hat anhaltendes Interesse an Sicherheitskennzahlen und -messung. Als Entwickler ist er außerdem im Bereich freier und Open-Source-Software engagiert. Turnbull hat mehrere Artikel und Bücher geschrieben, darunter Pro Linux System Administration und Pulling Strings with Puppet: Configuration Management Made Easy.

Erfahren Sie mehr über Serverbetriebssysteme

ComputerWeekly.de
Close