Was los ist
Werden die Systemressourcen knapp, muss der Administrator eingreifen und sie aufstocken oder umverteilen. Der System Activity Reporter sar hilft bei der Bedarfsanalyse.
- Michael Riepe
Antworten Server und Datenbank nicht schnell genug oder stĂĽrzen Anwendungen gar wegen Ressourcenmangels ab, muss der Admin handeln. Im Hinblick auf den Stromverbrauch sollte er das auch im umgekehrten Fall tun: wenn Server weitgehend ungenutzt herumstehen.
Dazu muss er zunächst feststellen, wie hoch die Auslastung seiner Systeme ist und welche Ressourcen wann und wie genutzt werden. Zur Debatte stehen nicht nur Rechenleistung und Speicherbedarf, sondern auch die Nutzung der Ein- und Ausgabekanäle zum Netz oder Massenspeicher sowie der Ressourcen des Betriebssystems – etwa Dateien, Prozesse oder Threads. Unix und seine Derivate bieten dafür eine Reihe von Werkzeugen, darunter den System Activity Reporter sar – unter Linux versteckt er sich im Paket sysstat (siehe Kasten „Onlinequellen“).
Alle Vorgänge im Blick
Mit dem Kommando sar 10 kann sich der Nutzer alle zehn Sekunden die CPU-Auslastung anzeigen lassen, aufgeschlüsselt nach den Kategorien %user, %nice, %system, %iowait, %steal und %idle. Der Wert von %steal ist nur bei virtuellen Maschinen von Bedeutung: Er zeigt an, wie viel Zeit der Prozessor mit der Ausführung anderer VMs verbracht hat. Weitere Felder – etwa %irq und %soft für die Bearbeitungszeit von Hard- und Software-Interrupts – lassen sich mit der Option –u ALL anzeigen.
Frei nach Heisenberg beeinflusst der beobachtende Prozess natürlich das Resultat. Jedoch nur geringfügig: auf dem Linux-PC des Autors etwa beansprucht sar 10 lediglich wenige Sekunden Rechenzeit pro Tag. Wer nur eine Momentaufnahme benötigt, kann die Zahl der anzuzeigenden Datensätze als zusätzliches Argument übergeben: sar 60 5 etwa zeigt fünf Minuten lang jede Minute die aktuelle CPU-Auslastung sowie am Ende einen Durchschnittswert an. Verfügt der Rechner über mehrere Prozessoren, beschränkt –P <nummer> die Ausgabe auf einen bestimmten; –P ALL zeigt die Last für jede CPU separat an.
Mit weiteren Optionen lässt sich der Fokus der Beobachtung verschieben. sar –b etwa zeigt Lese- und Schreibzugriffe auf den Massenspeicher an. Mit der Option –d schlüsselt sar die Daten obendrein nach Geräten auf. Wer sich für die Speicherauslastung interessiert, bekommt mit –r und –S die Belegung von Hauptspeicher und Swap-Bereich angezeigt. Die Optionen –R, –B und –W liefern statistische Daten zu Speicherallozierung, Paging und Swapping.
Daten über die Nutzung des Netzes lassen sich mit sar –n <detail> erfragen. Je nach Argument erhält der Nutzer die Transfer- oder Fehlerstatistik (DEV und EDEV), Informationen über die im Kernel integrierten NFS-Clients und -Server (NFS und NFSD), aktive Sockets (SOCK) sowie die komplette Statistik (ALL).
Daneben gestattet sar einen Blick auf die Ressourcen des Betriebssystems: sar –v zeigt die Zahl der genutzten Dateien, Inodes und Pseudo-Terminals (PTYs) an, sar –w die der erzeugten Tasks und Context Switches, sar –q die Zahl der gesamten und aktiven Tasks sowie die Systemlast.
Lässt man sich mehrere Kategorien anzeigen, gerät die Ausgabe schnell unübersichtlich. Wer mehrere Aspekte der Systemlast gleichzeitig beobachten will, tut das besser mit unterschiedlichen Kommandos in mehreren Fenstern. Greift der Admin zum Beispiel per Secure Shell ssh von außen auf den Rechner zu, kann er auch screen verwenden, um die Zahl der offenen Verbindungen zu reduzieren – muss allerdings zwischen den virtuellen Terminal-Fenstern hin und her blättern.
Reise durch die Zeit
Eleganter ist es, Datenerfassung und -auswertung zu trennen. Für den Zweck existiert der separate System Activity Data Collector sadc, der üblicherweise abseits des normalen Suchpfads im Verzeichnis /usr/lib/sa zu finden ist. Startet der Superuser ihn beim Booten mit /usr/lib/sa/sadc 60 <dateiname> &, sammelt er im Minutentakt Daten ein und schreibt sie in einem kompakten binären Format auf die Festplatte, wo sar sie mit der Option –f <dateiname> abholen kann. Aus Platzgründen lässt sadc Informationen zu Interrupts und Plattenaktivität außen vor. Wer sie benötigt, kann sie mit –S INT, –S DISK oder –S ALL explizit anfordern.
Verwendet der Administrator als Dateinamen ein Minuszeichen, legt sadc jeden Tag unter dem Namen /var/log/sa/sa<dd> eine frische Datei an. Die zwei Ziffern <dd> stehen für den jeweiligen Tag des Monats. Ältere, nicht mehr benötigte Dateien muss der Admin von Hand oder per Cron-Job verschieben, komprimieren oder löschen.
Analog verwendet sar –f – die Datensammlung des jeweiligen Kalendertages als Quelle. Benötigt der Nutzer die Daten eines anderen Tages, muss er den Dateinamen explizit angeben.
Ein dauerhaft laufender sadc belastet das System nur minimal. Sofern man ihn nicht gerade im Sekundentakt arbeiten lässt, hält sich auch das Datenvolumen in Grenzen – bei minütlicher Datenerhebung etwa 2 bis 3 MByte pro Tag. Es kann daher nicht schaden, den Data Collector beim Booten auf Verdacht zu starten.