Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
A. Willemer
Wie werde ich UNIX-Guru
I  ANWENDUNG
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.

II  ADMINISTRATION
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel

III  NETZWERK
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls

IV  DAS X-WINDOW SYSTEM
Die grafische Oberfläche von UNIX einrichten und nutzen

V  PROGRAMMIERUNG VON SHELLSKRIPTEN
Automatisieren von Tasks durch Shell-Skripte.

VI  PERL
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk

VII  PROGRAMMIERWERKZEUGE
C-Compiler, Analyse-Tools, CVS, yacc, diff

VIII  UNIX-SYSTEMAUFRUFE
UNIX-Befehle in eigenen Programmen nutzen

IX  LITERATUR
Weiterführende Literatur zu UNIX und LINUX

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« Optimierung des Dateisystems Tuning Informationen sammeln »

Unterabschnitte
  • vmstat
  • sar
  • Gegenmaßnahmen

Wissen, wo der Schuh drückt

Die Einschätzung, dass die Maschine langsam ist, reicht nicht aus, um Gegenmaßnahmen zu ergreifen. Man muss schließlich die Beschränkung beseitigen, die die Leistung am meisten einschnürt.

vmstat

vmstat ist ein Programm, das auf fast jeder UNIX-Maschine verfügbar ist. Es wertet diverse Kernelprotokolle aus und stellt sie dar. Dabei werden die Prozesse, der Speicher, das Swapping, der Plattendurchsatz und die CPU-Belastung beobachtet. Der Aufruf lautet:

vmstat Sekundenabstand Wiederholungen

Der erste Parameter bestimmt, wie viel Zeit in Sekunden zwischen den Ausgaben vergehen soll. Aufgrund der vielen Daten, die erhoben werden, sollte der Abstand nicht allzu gering sein, damit vmstat nicht selbst die Messung verfälscht. Der zweite Parameter bestimmt die Anzahl der Messungen. Multipliziert man die beiden Werte, erhält man den Zeitraum, den die Messung abdeckt. vmstat erzeugt eine Ausgabe, die wie folgt aussieht:

   procs                      memory    swap          io     system         cpu
 r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs  us  sy  id
 1  0  0    512  12932  90984 116120   0   0     0     0  103   407   5   0  95
 1  0  0    512  12932  90984 116120   0   0     0     0  123   502   4   0  96 

Folgende Werte werden dabei gemessen:

  • [procs:] zählt r (warten auf Laufzeit), b (uninterruptable sleeping), w (swapped processes)
  • [memory:] aus dem swpd (virtueller Speicher), free (idle), buff und cache
  • [swap:] swap in (si), swap out (so)
  • [io:] blocks in (bi), blocks out (bo)
  • [system:] in (Interrupts per second), cs (context switch per second)
  • [cpu:] Verteilung der CPU-Last auf user (us), system (sy) und idle (id). Beispielsweise deutet ein starkes Swapping bei gleichzeitiger hoher CPU-Belastung im Systembereich auf zu wenig Hauptspeicher hin.

Besonders interessant werden diese Werte, wenn man sie zu verschiedenen Zeitpunkten des Tages aufnimmt. Dadurch kann man erkennen, welche Zahlen sich überdurchschnittlich stark verändern. Es ist wichtig zu wissen, welche Werte für die Maschine im Ruhezustand typisch sind. Welche Ergebnisse erhält man bei einer beschäftigten Maschine, die aber noch zügig reagiert, und wie sehen die Zahlen aus, wenn die Maschine überlastet ist? Ein Gefühl für diese Zahlen sollten Sie als Administrator möglichst schon haben, bevor die Geschäftsleitung nach dem Verantwortlichen ruft.

Im folgenden Abschnitt über sar wird gezeigt, wie man ein solches Analysetool in die crontab (siehe S. crontab) stellt. Ähnlich kann man auch mit vmstat arbeiten.

sar

Ein anderes noch umfangreicheres Beobachtungstool gibt es bei System V Maschinen. Es heißt sar (system activity report). Es ist normalerweise nicht aktiviert. Man muss es also in Betrieb nehmen, um Daten über das System zu sammeln. sar erfasst Aktivitätszähler, die das System führt. Vor allem erstellt sar regelmäßige Statistiken, die die Auswertung eines Vergleichs zwischen Last- und Ruhezeiten ermöglichen. Da sar recht gute Informationen liefert, wenn etwas schief läuft, sollte man es in jedem Fall starten, wenn eine neue Maschine in Betrieb genommen wird, wenn man Probleme hat, deren Herkunft unerklärlich sind, oder wenn sich Dinge grundsätzlich ändern, wie der Einsatz neuer Software oder Hardware.

Die gesammelten Daten werden in dem Pfad /var/adm/sa gesammelt. Eventuell muss das Verzeichnis erst angelegt werden. Darin legt sar für jeden Tag des Monats eine Datei mit dem Präfix sa an. Für den 12. des Monats wäre dies also sa12.

Damit diese Dateien entstehen, ist ein Datensammler erforderlich. Dieser heißt sadc und wird in der rc-Datei des Systems gestartet:

/usr/lbin/sa/sadc /var/adm/sa/sa`date +%d`

Darüber hinaus verbirgt er sich im Skript sa1, das normalerweise in die crontab (siehe S. crontab) des root eingetragen wird.vgl. Manpage zu sa1

0 *    * * 6,0 /usr/lib/sa/sa1 3600 /var/adm/sa/sa`date +%d`
0 8-17 * * 1-5 /usr/lib/sa/sa1 3600 /var/adm/sa/sa`date +%d`
0 8-17 * * 1-5 /usr/lib/sa/sa1 1200 3 /var/adm/sa/sa`date +%d`
5 18   * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 -A

Das Skript sa2 erzeugt aus den sa-Dateien einen täglichen Bericht in reinem Textformat, den es unter fast gleichem Namen anlegt. Das Präfix ist allerdings hier sar statt sa.

Zu Auswertung der sa-Dateien wird das Kommando sar verwendet. Durch seine Optionen kann bestimmt werden, welche Informationen angezeigt werden:

  • [-A] Alle Optionen auf einmal einschalten.
  • [-a] Dateizugriffe. Zeigt iget/s, namei/s und dirblk/s
  • [-B] Kopierpufferaktivitäten
  • [-b] Pufferaktivitäten:

    bread/s, bwrite/s sind die Blockzugriffe zwischen den Systempuffern und der Peripherie.

    lread/s, lwrite/s sind die Zugriffe auf die Systempuffer.

    %rcache, %wcache ist das Verhältnis zwischen Zugriffen auf die Puffer und die Peripherie.

  • [-c] Berichtet über Systemcalls, unter anderem über fork() und exec().
  • [-d] Zeigt die Aktivität einzelner Blockdevices. Diese Informationen können hilfreich sein, um Zugriffe auf mehrere Platten zu verteilen.
  • [-g] Serielle Schnittstellen
  • [-h] Pufferstatistiken
  • [-m] Messages und Semaphore
  • [-n] Namenscache-Statistik
  • [-p] Paging-Aktivitäten. Diese Statistik gibt Auskunft über die Häufigkeit des Ladens ausgelagerter Speicherbereiche.
  • [-q] Gibt Auskunft über die Prozesslisten.
  • [-R] Prozessaktivitäten: beispielsweise wie oft der Prozessumschalter gestartet wurde.
  • [-u] CPU-Auslastung: %usr, %sys, %wio, %idle

    usr ist die Auslastung durch Anwendungsprogramme, sys ist der Verbrauch durch Systemfunktionen. wio ist das Warten auf I/O-Funktionen. Unter idle steht die Zeit, die sich die CPU gelangweilt hat. Diese sollte nur in Ausnahmefällen unter 50% fallen. Insbesondere, wenn dieser Wert über 90% steigt, besteht der Verdacht, dass ein Programm Polling betreibt oder dass das System ein Problem hat.

  • [-v] Status der Prozess-, i-node- und Dateitabellen.
  • [-w] Swapping und Switching: pswch/s zeigt die Anzahl der Prozesswechsel pro Sekunde.
  • [-y] TTY-Devices

Gegenmaßnahmen

Die CPU-Last muss nach User- und nach Systemlast getrennt beurteilt werden. Beide haben unterschiedliche Ursachen. Die Systemlast sagt, dass die Maschine lange mit Systemaufrufen wie dem Laden von Dateien, der Netzkommunikation oder Ähnlichem zu tun hat. Dabei tragen beispielsweise beim Laden einer Datei nicht so sehr die Plattengeschwindigkeit, sondern der Aufwand beim Verwalten der Zugriffe in die CPU-Systemlast bei. Dazu gehört beispielsweise das Prüfen von Sperren oder Quota. Eine hohe Systemlast kann bedeuten, dass zu wenig RAM in der Maschine vorhanden ist und dass das System ständig mit dem Swappen befasst ist. Es kann aber auch bedeuten, dass zu wenig Puffer für die Dateioperationen zur Verfügung steht.

CPU-Last im Userbereich bedeutet, dass Programme sich stärker mit ihrem Code als mit den Daten beschäftigen. Das geht in Ordnung, wenn es Programme sind, die beispielsweise dreidimensionale Bilder berechnen. Auch bei der Kompilierung auf Entwicklermaschinen können kurzfristig bis zu 100% CPU-Auslastung im Userbereich entstehen. Bei den üblichen Verwaltungsprogrammen auf Servern sind CPU-Belastungen von 10% bis 20% bereits relativ viel. Wenn der Wert darüber hinausgeht, muss man feststellen, welches Programm wie viel CPU-Zeit beansprucht. Zu diesem Zweck gibt es Programme wie top (siehe S. top), das quasi eine Hitparade der Prozesse darstellt. Verfügt man nicht über ein derartiges Programm, kann man auch durch mehrfaches Anzeigen der Prozessliste mit ps die schuldigen Prozesse finden. Da ps immer nur die insgesamt angefallene CPU-Zeit anzeigt, muss man die Differenz der Messungen bilden. Ein Programm, das auffallend viel Zeit verbraucht, kann entweder völlig durcheinander sein oder durch so genanntes Polling (siehe S. polling) CPU-Zeit verschwenden.

Im I/O-Bereich zeigt sich die Auslastung der Dateisysteme. Interessant ist die Größe des Cache. Ungepufferte Plattenzugriffe sind extrem langsam. Wenn die Puffergröße nicht ausreicht, werden spürbare Performanceeinbrüche die Folge sein. In einigen älteren Systemen (beispielsweise SCO 3.x) muss der Plattencache statisch als Kernelparameter festgelegt werden. Für einen Firmenserver ist der Defaultwert oft viel zu klein und muss unbedingt heraufgesetzt werden. Bei Systemen mit dynamischer Speicherverteilung wird der Cache natürlich nicht erhöht, wenn dadurch der Hauptspeicher so knapp wird, dass das Swapping erheblich zunimmt. In solch einem Fall ist ein Speicherausbau dringend geboten.

Dass der freie Hauptspeicher einer Maschine mit dynamischer Speicherverwaltung gering ist, sollte niemanden alarmieren. Aus der Sicht des Speichermanagers ist freier Speicher nur ein unnützer Stromfresser, und er wird versuchen, die wertvolle Ressource auf die Plattenpuffer zu verteilen. Dort macht er sich nützlich, indem er Dateizugriffe beschleunigt. Auch ist es völlig normal, dass erhebliche Teile des Swapbereichs belegt sind, obwohl freier Speicher zur Verfügung steht. Sofern die ausgelagerten Prozesse nicht aktiv werden, können sie getrost dort bleiben, wo sie sind.



« Optimierung des Dateisystems | Tuning | Informationen sammeln »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de