10 Performance-Tools für Linux-basierte Betriebssysteme
0Systemadministratoren haben unzählige Möglichkeiten, um die Performance Linux-basierter Betriebssysteme zu analysieren. Die Herausforderung besteht darin, die geeigneten Werkzeuge auszuwählen und ihre Ergebnisse richtig zu interpretieren. In diesem TKmag-Artikel stellen wir Ihnen kompakt zusammengefasst eine Sammlung nützlicher Performance-Tools für Linux vor, um das jeweilige System beim Arbeiten zu beobachten – ob generell oder im Falle eines Performanceproblems.
Die Überwachung eines Linux-basierten Systems kann mit den unterschiedlichsten Software-Komponenten geschehen. Spezialisierte Tools haben ihren Charme, weil sie ohne großen Konfigurationsaufwand die Informationen liefern, die man gerade benötigt. Neben diesen spezialisierten Tools gibt es auch verschiedene Tools mit breiterem Einsatzbereich. Diese fordern dadurch aber einen wesentlich höheren Konfigurationsaufwand.
In diesem TKmag-Artikel stellen wir Ihnen Werkzeuge aus beiden Bereichen vor. Im Konkreten behandeln wir folgende Analyse-Tools:
mpstat, vmstat, pidstat, iostat, nicstat, dstat, sar, top, htop und iotop
Sammeln von Statistiken dank Performance-Tools für Linux
Statistiken eines Linux-basierten Betriebssystems lassen sich mit einer Vielzahl an Tools sammeln. Das Package sysstat vereint praktischerweise zahlreiche dieser Tools wie mpstat, pidstat, iostat und sar. Diese vier Werkzeuge werden bequem per „sudo apt install sysstat“ installiert.
Statistiken zu Prozessoren und RAM
mpstat kümmert sich um das Reporting von CPU-bezogenen Statistiken. Es zeigt die CPU-Auslastung des jeweiligen Cores anhand der verschiedenen Zustände wie beispielsweise %usr auf. Beim erstmaligen Aufruf nach dem Bootvorgang zeigt es die Statistiken seit besagtem Startvorgang.Mit mpstat –P ALL erfolgt eine Auflistungaller vorhandenen Cores. Bei CPUs mit Hyperthreading Technologie (HT) werden die Kerne wie physische angezeigt. Eine sehr informative Spalte ist %iowait. Hiermit kann ein Rückschluss auf das I/O-Subsystem erfolgen. Ein hoher Wert bedeutet eine schlechte Performance des Storage, die CPU muss prozentual sehr lange warten.
Das Tool vmstat des procps Packages, das unter Ubuntu standardmäßig installiert ist, liefert aggregierte Infos über den verbauten Arbeitsspeicher, I/O- und CPU-Aktivität. Typischerweise wird es per vmstat 1 5 aufgerufen. Die Werte werden somit insgesamt fünfmal und jeweils innerhalb von einer Sekunde gemessen und ausgegeben. Die erste Ausgabezeile enthält die Durchschnittswerte seit dem letzten Bootvorgang. Der Wert der Spalte free ist allerdings mit Vorsicht zu genießen, denn er zeigt nicht den tatsächlich freien RAM an. Linux-basierte Betriebssysteme verwenden einen Teil des RAMs für den Page Cache. Eine hohe Zahl in der Spalte r bedeutet, dass viele Prozesse lauffähig wären, aber auf die CPU warten. Die Spalte b zeigt Prozesse, die auf I/O warten. Eine hohe Zahl deutet hier also auf ein langsames Storage hin.
vmstat kann als normaler Benutzer ausgeführt werden, es erfordert keine sudo-Rechte.
Detaillierte Infos zur PID
Mit den vorgestellten Tools mpstat und vmstat erhält man übersichtliche Zusammenfassungen, um bei einem Performanceproblem schnell über wichtige Eckpunkte des Systems informiert zu werden.
Wenn man sich nun Detailinformationen einer spezifischen PID (Process Identifier) Nummer näher ansehen will, gibt es dafür ebenfalls ein passendes Werkzeug. Dieses wurde praktischerweise pidstat benannt. Eine PID Nummer ist ein Schlüssel zur eindeutigen Identifikation eines Prozesses. Der Aufruf des Programmes top enthält in der ersten Spalte die PID eines jeden Prozesses. Mit Kenntnis dieser PID kann nun der Aufruf des Kommandos „pidstat –p PID –u 1 –l“ erfolgen. Es zeigt Statistiken zu genau dieser PID. Sie werden je Sekunde (Parameter –u 1), inklusive Ausgabe des Kommandos und Argumente des Prozesses (-l) ausgegeben.
Wie steht es um die I/O-Performance?
iostat liefert die gewünschten I/O-Statistiken von Geräten wie Festplatten oder einzelnen Partitionen. Dieses nützliche Tool erstellt bei einem Aufruf im oberen Bereich einen Bericht über die CPU-Auslastung und darunter einen Bericht über die Datenträgerauslastung. Je Datenträger (zum Beispiel /dev/sda) wird eine Zeile erstellt. Die zusammengefassten Werte für fünf wichtige Indikatoren werden ausgegeben. Zu diesen zählt beispielsweise die Anzahl der gelesenen Blöcke je Sekunde in Kilo- oder Megabyte. Die Ausgabe kann auch nur auf die CPU-Statistiken mittels –c Parameter oder auf die Datenträgerauslastung (-d) eingeschränkt werden.
Zustand der Interfaces überprüfen
Neben Prozessoren, RAM und I/O ist der aktuelle Zustand der Netzwerkinterfaces eines Servers wichtig. Nicht immer ist die CPU der limitierende Performancefaktor, eine ausgelastete Netzwerkverbindung kann ebenfalls ein großes Ärgernis sein. Das Tool nicstat liefert die Statistiken aller verbauter Netzwerkkarten eines Servers. Mit Angabe des Parameters –i gefolgt von der Interfacebezeichnung (beispielsweise eth0) kann man die Ausgabe auf eine einzige Netzwerkschnittstelle einschränken. Ein beispielhafter Aufruf ist „nicstat –i eth0 1 5“, somit wird nicstat für das eth0-Netzwerkinterface insgesamt fünfmal hintereinander mit einem Abstand von einer Sekunde aufgerufen. Die vorletzte Spalte der Ausgabe, %util, ist ein wichtiger Indikator für die Leistungsfähigkeit der Schnittstelle. Ist dieser Wert dauerhaft zu hoch, sollte man prüfen, ob ein Dienst ungewollt Bandbreite verbraucht oder ob die Schnittstelle für den Einsatzzweck unterdimensioniert ist. Abhilfe kann Link Aggregation oder auch der Wechsel zu 10GbE Schnittstellen schaffen.
Nicht nur spezialisierte Tools
Die bisher vorgestellten Tools sind alle für einen spezifischen Zweck konzipiert, abgesehen von aggregierten CPU-Last-Ausgaben wie bei iostat. Eine Kombination klassischer Werkzeuge hat auch seinen Charme, da damit unter einem „Dach“ durch zahlreiche Parameter verschiedenste Dienste vollführt werden können. dstat ist ein solches Beispiel. Laut dessen Manpage ist dieses Tool ein Ersatz für vmstat, iostat und ifstat. Eine weitere Funktion ist die Möglichkeit in eine CSV-Datei zu exportieren. Darüber hinaus hat dstat eine Plugin-Funktion integriert, einige Plugins sind bereits enthalten und neue können selbst hinzugefügt werden. Die Möglichkeiten sind somit nahezu unbegrenzt. So ist es dank dstat beispielsweise möglich, Datenbanken abzufragen, die Queue von Sendmail anzuzeigen und Infos von einem ESXi auszuwerten.
Alternative zu dstat
Ein weiterer Bestandteil des sysstat Packages ist der System Activity Report, kurz sar. Dieser gilt wie dstat als multifunktionales Admin-Werkzeug. Durch eine Fülle an Parametern klinkt das Tool sich in nahezu alle Bereiche eines Linux-Systems ein, die Bandbreite reicht vom Parameter –d zur Abfrage der Infos über Festplatten bis zu -n, um Lüfter zu überprüfen. Eine Vielzahl an System-Aktivitäten lassen sich mit sar sammeln, berichten und abspeichern.
Überwachung in Echtzeit
Alle bisher vorgestellten Tools sind dazu geeignet, gemessene und aufgezeichnete Werte anzuzeigen und zu interpretieren. Sie können aber nur in eingeschränktem Maße zur Live-Betrachtung der Aktivitäten an einem Linux-Betriebssystem verwendet werden. Deshalb gibt es eine Reihe von Programmen, die eine simultane Betrachtung des Geschehens erlauben.
Klassiker der Ressourcen-Monitore
top ist wohl jedem Admin bekannt, denn hiermit können aktuell laufende Prozesse in Echtzeit überwacht werden. Standardmäßig sind die Werte nach CPU-Verwendung sortiert, Shift + m sortiert nach Speicherverbrauch, Shift + p kehrt wieder zur Sortierung nach CPU-Verbrauch zurück. Die bekannteste Funktion von top ist die Möglichkeit, Prozesse per Taste k und Angabe der PID hart zu beenden, also zu „killen“.
Im interaktiven Modus startet top standardmäßig, die dynamische Ausgabe ist jedoch Fluch und Segen zugleich: Kurze Prozesse können übersehen werden, Prozesse mit stark schwankender CPU-Zeit werden laufend umsortiert. Dies ist für die Übersichtlichkeit nicht förderlich. Außerdem darf man nicht außer Acht lassen, dass top wie jedes Tool selbst Ressourcen verbraucht
und einen eigenen Prozess hat. Um der dynamischen Ausgabe des interaktiven Modus aus dem Weg zu gehen, kann top auch mit dem Parameter –b im Batch-Modus gestartet werden.
Umfangreiche Alternativlösung htop
Die Möglichkeiten der Live-Betrachtung des Systems sind mit top bereits umfangreich, doch der htop, der sogenannte „super advanced top“, setzt noch einiges oben drauf: nicht nur ein klickfähiges UI,
sondern auch eine sehr angenehme, farbige Codierung der Ausgabe. Die Lesbarkeit erhöht sich dadurch deutlich. Darüber hinaus lässt sich die Anzeige individuell gestalten und anpassen. Per F2 Taste sind vielerlei Anpassungsoptionen vorhanden. Im oberen Bereich der Anzeige sieht man anhand von Balkendiagrammen die Auslastung aller vorhandenen CPU-Kerne, Speicher und beispielsweise auch die aggregierten Werte der CPU-Auslastung. Per F9 lassen sich Prozesse „killen“, die Taste F5 ermöglicht dank einer Baumansicht ein besseres Erkennen von zusammenhängenden und abhängigen Prozessen.
I/O Überwachung
Der einfache, top-ähnliche I/O-Monitor iotop dient dazu, Prozesse aufzuzeigen, die I/O verursachen. Eine Filterung nach PID ist möglich. Ein praktikabler Aufruf wäre iotop –o –b, dadurch werden nur Prozesse angezeigt, die I/O verursachen. Außerdem wird der Batch-Modus statt des interaktiven Modus aktiviert.
Verbindungen zur Außenwelt
Den Reigen der *top Tools komplettiert in dieser Übersicht der iftop. Damit lässt sich die verursachte Bandbreite je Netzwerkinterface eines Hosts auslesen. Ein praktischer Aufruf ist „sudo iftop –P“, dadurch werden die zur Übertragung verwendeten Ports auf beiden Seiten angezeigt oder per „sudo iftop –i <interface>“ auf ein einzelnes Netzwerkinterface des Hosts eingeschränkt. Was iftop zusätzlich bietet, sind zur Laufzeit ausführbare Kommandos. Nach dem Start von iftop einfach ein Fragezeichen eintippen. Es wird nun eine gruppierte Übersicht aller Kommandos angezeigt: Zum Beispiel kann durch das Eintippen von n die Auflösung der IP-Adressen in Hostnamen deaktiviert werden. Die oben beschriebene Anzeige der Ports kann zur Laufzeit konfiguriert werden, man tippt hierzu p.
Wie man anhand dieser Zusammenstellung sieht, sind keine komplexen und aufwändigen Softwarepakete erforderlich um ein Linux-System performanceseitig überwachen zu können. Viele Monitoring-Tools setzen bekanntlich auf diese kleinen Werkzeuge auf, um Ihre Graphen darstellen zu können. Da dieser TKmag Artikel nur ein kompakter Umriss ist, sollte an dieser Stelle noch ein Verweis auf unser Thomas-Krenn-Wiki und die Rubrik zum Thema Linux Performance erfolgen. In dieser Kategorie findet sich eine Vielzahl an Anleitungen zu den unterschiedlichen Werkzeugen eines Linux-basierten Betriebssystems.