Ein üblicher erster Befehl, den ein Systemadministrator bei der Analyse von Performance-Problemen auf Linux-Servern aufruft, ist Top. Das durch den Procps-Fork Procps-NG in aktuellen Linux-Distributionen generalüberholte Werkzeug ist jedoch bei weitem nicht das einzige Werkzeug für diesen Zweck. Die Alternativen Htop, Atop und Glances streben an, dessen Möglichkeiten zu erweitern.
So erfreut schon seit 2004 Htop mit einer rollbaren Prozessliste und einfacher Bedienung via Funktionstasten die Anwender. Atop indes markiert ausgelastete Ressourcen farbig und erfasst auch die Auslastung von Laufwerken und Netzwerk. Als einziger Kandidat ist es in der Lage, Leistungsdaten bis auf die Prozess-Ebene hinunter aufzuzeichnen und diese sogar nachträglich zu analysieren. Der Neu-Ankömmling Glances verspricht hingegen möglichst viele Informationen in 80×24 Zeichen unterzubringen und bietet die Möglichkeit, auch entfernte Systeme zu beobachten, ohne sich per SSH anzumelden.
Alle Werkzeuge bieten zwei Bereiche: Ein Bereich zeigt allgemeine System-Informationen zu CPU-, Speicher- sowie bei einigen auch Massenspeicher und Netzwerk-Auslastung. Die Prozessliste stellt den anderen Bereich dar. Bei Top und Htop lässt sich die Liste der Felder konfigurieren. Atop und Glances bieten feste Ansichten, ermöglichen es aber, bestimmte Informationen auszublenden oder zu beschränken. Nur bei ausreichend großem Terminal-Fenster zeigen Atop und Glances alle Informationen an.
Top: Auf jedem System installiert
Der große Vorteil von Top: Es ist auf jedem System installiert. Dabei bietet das unscheinbare Programm bereits erstaunlich viel. Der Fork bietet einigen zusätzlichen Komfort, den andere Werkzeuge schon länger bieten. So erlaubt auch Top nun das Rollen in der Prozessliste. Das Programm aktualisiert dabei auch den allgemeinen Bereich – das lässt die Anzeige beim Rollen unruhig erscheinen. Außerdem lassen sich die anzuzeigenden Felder und deren Reihenfolge, sowie das Sortierfeld nun komfortabler einstellen. Drücken Sie dazu die Taste [F]. Interessant ist ansonsten auch noch die Filter-Funktion. So filtert Top nach Drücken der Taste [O] mit COMMAND=mysql
nach allen Prozessen mit MySQL im Namen. Mit [Umschalt]+[H] zeigt Top indes alle Benutzer-Threads.
Außerdem bietet Top unterschiedliche Ansichten, die es bei Bedarf auch gleichzeitig und farbig anzeigt. Probieren Sie mal die Tastenfolge [Umschalt+A], [z], [x], [a], [-], [a], [z], [x], [a], [-], um eine farblich getrennte Ansicht nach CPU-Leistung und Speicher-Auslastung zu erhalten. Und ja: Die Farben lassen sich mit [Umschalt]+[Z] auch wechseln! Mit [Umschalt]+[W] speichern Sie die aktuellen Einstellungen in der Datei ~/.toprc
.
Htop: Top aka Midnight Commander
Das Programm Htop ähnelt Top weitgehend. Allerdings war es mit Htop schon immer möglich, mit den Pfeiltasten vertikal und horizontal zu scrollen. Ansonsten greift Htop in Midnight Commander-Manier für die Bedienung im Wesentlichen auf die Funktionstasten zurück. Die unterste Zeile zeigt eine Referenz dazu.
Im zweispaltigen Kopfbereich zeigt Htop links die CPU-Auslastung pro Prozessorkern, die Swap- und die Hauptspeicher-Auslastung mit netten ASCII-Balken. Die via [H] aufrufbare Hilfe offenbart die Farb-Zuordnung.
Mit [F9] erlaubt es Htop, einem Prozess ein Signal zu senden. Anders als bei Top ist dabei nicht erforderlich, die Prozess-ID, die PID des Prozesses anzugeben. Htop nimmt einfach den aktuell in der Liste ausgewählten, farblich hinterlegten Prozess. Mit [F7] oder [F8] verringern oder erhöhen Sie den Nice-Wert des Prozesses. Allerdings wechselt Htop den aktuell ausgewählten Prozess je nach Sortierung beim Aktualisieren der Anzeige, es sei denn Sie drücken die Taste [F], um den Prozess in der Ansicht zu verfolgen. Alternativ markieren Sie den Prozess mit der Leertaste, um dieses Verhalten zu umgehen. So kann Htop anders als Top auch mit mehreren Prozessen arbeiten, indem Sie alle gewünschten Prozesse markieren. Mit [U] löscht Htop die Auswahl wieder.
Mit [F3] suchen Sie nach Prozessen. Mit [F4] filtern Sie die Liste permanent nach Prozessen mit einem bestimmten Namen und mit [u] nach Benutzern. Htop zeigt standardmäßig auch Threads an. So taucht ein MySQL-Server mit all seinen Threads in der Liste auf.
Permanente Änderungen an den Einstellungen, die Htop in die Datei ~/.config/htop/htoprc
schreibt, gelingen mit [F2]. Dort konfigurieren Sie sowohl den Kopfbereich als auch die Spalten-Ansicht oder inwiefern Htop Kernel oder Userspace-Threads anzeigt.
Für die tiefere Analyse von Prozessen hat Htop ein paar nette Extras an Board: So hängt das Programm mit der Taste [s] den Befehl strace
an den aktuellen Prozess an. So schauen Sie, welche System-Funktionen der Prozess aufruft. Mit [L] verwendet Htop den Befehl ltrace
für den Aufruf von Bibliotheks-Funktionen. Und mit [l] erhalten Sie eine Liste der gerade geöffneten Dateien.
Atop: Realtime-Analyse und Berichte
Der AT Computing’s System & Process Monitor Atop besteht aus drei Teilen: Dem eigentlichen Top-artigen Programm Atop, das Programm Atopsar, um aus Atop-Aufzeichnungen Berichte zu generieren, und der Dienst und das Kernel-Modul Netatop, um den Netzwerk-Prozess pro Prozess aufzuschlüsseln. Debian und Ubuntu liefern die veraltete Version 1.26 als Paket. Für SUSE, RedHat, CentOS gibt es im Server-Montoring-Repo die 1.27. Wer Netatop verwenden möchte, dem sei empfehlen, die Version 2.1 mitsamt netatop 0.3 aus den Quellen zu kompilieren oder es mit dem RPM-Paket des Autors zu versuchen.
Atop liefert gegenüber Top zahlreiche Zusatz-Informationen, lässt praktischerweise aber weg, was gerade nicht relevant ist. Durch das standardmäßige 10-Sekunden-Intervall bleibt auch genug Zeit, die Informationen aufzunehmen – pausieren ist mit der Taste [z] dennoch möglich. So oder so bekommt Atop durch die Kernel-Funktion Process Accounting auch von Prozessen, die in diesem Intervall gestartet oder beendet werden, mit. Stark ausgelastete Subsysteme markiert Atop in türkis oder sogar blinkend rot. Die sinnvoll gewählten und änderbaren Grenzwerte hierfür ersetzen jedoch das eigene Nachdenken nicht. Knüller-Funktion bei Atop ist die Möglichkeit, in Berichten via Atopsar oder sogar interaktiv via Atop in die Vergangenheit zu reisen.
Atopsar erstellt auch Berichte nach Prozessen: So zeigen die Optionen -O, -G, -D und mit Netatop auch -N jeweils die drei Prozesse, die am meisten Prozessorzeit, residenten Speicher, Disk-I/O oder IPv4/IPv6-Netzwerk-Traffic verursachten. Bei Live-Messungen stehen diese Berichte jedoch nicht zur Verfügung. Das folgende Beispiel zeigt, wie BTRFS-Kernel-Threads, das von PIM-Framework Akonadi gestartete MySQL und die Baloo-Desktop-Suche eines KDE Desktops am 20. Juni zwischen 12:30 und 14:00 den größten Anteil an der SSD-Nutzung hatten:
1 2 3 4 5 6 7 8 9 10 11 12 |
> atopsar -r /var/log/atop/atop_2014[…] -b 12:30 -e 14:00 -D merkaba 3.15.0-tp520 #59 SMP PREEMPT Mon Jun 9 10:02:22 CEST 2014 x86_64 2014/06/20 -------------------------- analysis date: 2014/06/20 -------------------------- 12:34:46 pid command dsk% | pid command dsk% | pid command dsk%_top3_ 12:44:46 763 btrfs-tr 51% | 2201 mysqld 22% | 292 btrfs-tr 10% 12:54:46 763 btrfs-tr 36% | 2201 mysqld 22% | 2044 baloo_fi 18% 13:04:46 763 btrfs-tr 23% | 2044 baloo_fi 22% | 2620 zsh 21% 13:14:46 763 btrfs-tr 33% | 2044 baloo_fi 20% | 3019 icewease 11% 13:24:46 763 btrfs-tr 37% | 2201 mysqld 21% | 2044 baloo_fi 12% 13:34:46 2201 mysqld 26% | 763 btrfs-tr 26% | 2044 baloo_fi 13% 13:44:46 763 btrfs-tr 38% | 2201 mysqld 19% | 2044 baloo_fi 9% 13:54:46 2638 zsh 92% | 6399 zsh 5% | 2044 baloo_fi 1% |
Richtig gut wird es dann aber mit atop -r
. Damit liest Atop eine Aufzeichnungsdatei ein und erlaubt mit [t] und [Umschalt]+[T] in ihr zu blättern. Diese kommt vom im Hintergrund gestarteten Atop. Wer einem problematischen Server allerdings öfter als mit dem Standard-Intervall von 10 Minuten auf die Finger schauen möchte, startet bei Bedarf atop -w
mit einem kürzeren Intervall. So muss der Admin sich nicht mehr wecken lassen, um bis auf Prozess-Ebene herauszufinden, was ein Server mitten in der Nacht alles so macht.
Der Newcomer Glances
Der Newcomer unter den Top-Varianten, das Python-Programm Glances, greift auf die Bibliothek psutil zurück, um Systeminformationen abzufragen. Der Befehl glances startet das Programm im normalen Modus. Mit glances -s
startet Glances dagegen in den Server-Modus. Dann lauscht es auf Port 61209 auf allen IP-Adressen nach Anfragen (Abbildung 6). Mit -B
geben Sie eine IP-Adresse und mit -p
einen anderen Port an. Auf dem Client verbindet sich Glances mit glances -c IP-Adresse
mit dem Server. Mit der Option --password
setzen Sie für den Server ein Passwort, das sie beim Verbinden mit dem Client wieder angeben müssen. So oder so gehen die System-Daten jedoch unverschlüsselt über die Leitung.
Selbst bei einer Terminal-Größe von 80×24 Zeichen zeigt Glances eine ganze Reihe an Informationen an: Im Kopfbereich zeigt Glances die CPU-Auslastung und Speicher-Auslastung, sowie die Last. Auf der linken Seite gibt das Programm einen Überblick über die Netzwerk- und Disk-Transferraten sowie den Füllstand der Dateisysteme. Die Prozessliste stellt Glances auf der rechten Seite dar. Mit einem größeren Fenster gibt es zusätzliche Details im Kopf-Bereich wie zusätzliche Angaben zur CPU-Auslastung und in der Prozess-Liste wie die insgesamt verbrauchte CPU-Zeit oder den Disk I/O pro Prozess.
Mit [C] sortieren Sie die Prozesse nach CPU-Zeit, mit [M] nach Speicher-Nutzung, mit [I] nach Disk I/O und mit [P] nach Name. Wie Atop sortiert Glances mit [A] auch nach der meist genutzten Ressource. Weitere Möglichkeiten für das Zeigen und Verstecken verschiedener Anzeige-Elemente zeigt die Taste [H]. Der Export in eine CSV-Datei mit glances --output-csv DATEINAME
ermöglicht den Import von Werten in eine Tabellen-Kalkulation wie LibreOffice Calc oder Excel. Dabei verwendet Glances allerdings für die Spalten-Namen ein anderes Trennzeichen als für die einzelnen Werte. Mit einem Komma und dem Pipe-Zeichen |
als Trennzeichen erhalten Sie einen lesbaren Import.
Fazit
Alle erwähnten Top-Varianten weisen jeweils spezifische Vor- und Nachteile auf. An Glances gefallen beispielsweise die kompakte Ansicht, das Ereignis-Protokoll sowie der Server-Betrieb. Bei Htop und Top sticht die weitreichende Konfigurierbarkeit heraus. Persönlicher Favorit des Autors bleibt indes Atop, das immer genau das anzeigt, was gerade relevant ist und alles weg lässt, was keine Rolle spielt. Insbesondere die Aufzeichnungsfunktion mit der Möglichkeit Berichte zu erstellen und Aufzeichnungen nachträglich interaktiv durchzublättern, erweist sich bei Atop als großer Pluspunkt.
Dieser Blog-Eintrag basiert mit freundlicher Genehmigung durch die Redaktion auf meinem Artikel „Spürhunde“ in der Linux User 08/2014 auf Seite 34. Mehr zu einzelnen Werkzeugen lesen Sie in meinem Artikel oder lernen Sie bei einem meiner Linux Performance Analyse & Tuning-Kurse.