Bitte nehmen Sie Platz!
Dr. Linux
Wer nicht fragt…
Mein Rechner kommt mir so langsam vor – gibt's da Diagnosemöglichkeiten?
Dr. Linux: Ihr Linuxsystem bringt natürlich einige Programme mit, die Ihnen bei der Analyse Ihres Systems echte Hilfe bieten. Vorstellen möchte ich Ihnen vmstat ("virtual memory statistics"). Auf der Kommandozeile aufgerufen produziert es etwa folgende Ausgabe:
procs memory swap io system cpu r b w swpd free buff cache si so bi bo in cs us sy id 0 0 0 212 4936 3104 23556 0 0 3 0 128 266 2 0 98
Diesen Zahlen- und Abkürzungswirrwarr entschlüsseln Sie wie folgt:
- r ("run"): Je höher die Zahl, die Sie hier vorfinden, desto langsamer ist Ihr System. Hier wird angezeigt, wieviele Prozesse laufen würden, wenn sie nicht auf Rechenzeit warten müssten.
- b ("block"): Prozesse, die hier angezeigt werden, warten auf bestimmte Ereignisse, um den Programmablauf fortsetzen zu können, nicht jedoch auf Rechenzeit.
- w: Die Zahl an dieser Stelle zeigt Ihnen die Anzahl aller Prozesse, die z.Z. in den Swap-Bereich ausgelagert sind.
- swpd gibt den aktuell benutzten Swap-Speicher in Kilobyte an.
- free zeigt, wieviel Kilobyte RAM-Speicher gerade ungenutzt sind.
- buff zeigt die Größe der Speicherbereiche, in denen die Ein-/Ausgabe-Puffer liegen; die Einheit ist ebenfalls Kilobyte. Werden Daten produziert, so wird nicht für jedes Zeichen bzw. jeden Block ein Transfer auf die Festplatte vorgenommen. Alle Ein-/Ausgaben landen zunächst in einem Pufferbereich. Wird z.B. durch Lesen einer Datei versucht, auf einen Block innerhalb der Datei zuzugreifen, so schaut das Betriebssystem nach, ob der gesuchte Block schon im Puffer vorhanden ist. Wenn ja, wird er geladen und danach dem Programm zur Verfügung gestellt, das ihn angefordert hat.
- Unter cache erfährt man in Kilobyte, wieviel eingebauter Festplattencache momentan zur Verfügung steht.
- si ("swap in") und so ("swap out") zeigen an, wieviel Kilobyte Daten pro Sekunde vom Swap-Bereich auf der Festplatte in den Hauptspeicher geladen bzw. vom RAM auf die Platte ausgelagert wurden.
- bi ("block in") und bo ("block out") deutet z.B. auf Festplattenaktivitäten hin, da hier die Anzahl der Blöcke pro Sekunde angezeigt wird, die an Block-Geräte geschickt bzw. von solchen empfangen wurden. Block-Geräte sind zum Beispiel Floppies und Festplatten.
- in zeigt die Anzahl der Unterbrechungen pro Sekunde, die durch Hardware-Anforderungen entstehen; die sogenannten Interrupts.
- cs ("context switch") zeigt, wie oft pro Sekunde von einem Programm zum nächsten umgeschaltet wird (Multitasking).
- us gibt wieder, wieviel der genutzten Prozessorzeit prozentual von Anwendungsprogrammen verbraucht wird, während
- sy die vom System genutzte Prozessorzeit anzeigt.
- id ist die ungenutzte Prozessorzeit, wiederum in Prozent.
Eine id-Zahl im zweistelligen Bereich und gleichzeitige krasse Aktivitäten in si und so können erste Hinweise auf zu wenig Hauptspeicher sein. Die hohe Zahl unverbrauchter Prozessorzeit bedeutet in so einem Fall, dass das System häufig auf Festplattenzugriff warten muss. Bestätigen lässt sich dies, wenn swpd hoch ist, free,buff und cache hingegen relativ niedrig bleiben. Bewegen sich id, si und so ständig nahe bei Null, sind dies ernsthafte Hinweise auf einen zu lahmen Prozessor.
Um Problemen auf die Spur zu kommen, veranlassen Sie vmstat während dessen, periodische Meldungen zu produzieren. Allerdings müssen Sie hier u.U. Geduld beweisen, wenn sich sowieso schon alles so lahm bewegt wie eine Schildkröte im Winter.
Das folgende Beispiel zeigt eine vmstat-Ausgabe mit sechs Wiederholungen (zweite Ziffer) im Sekundentakt (erste Ziffer):
user$ vmstat -n 1 6
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 208 1556 2616 20736 0 0 3 0 130 265 2 0 97
2 0 0 208 1552 2616 20552 0 0 230 0 2019 2358 36 16 48
0 0 1 208 1544 2616 18868 0 0 91 0 830 2607 41 19 40
0 0 0 208 1544 2616 18868 0 0 0 0 102 208 0 1 99
1 0 0 208 1500 2616 18912 0 0 11 0 358 734 0 5 95
0 1 0 208 2336 2616 19188 0 0 69 60 1150 727 10 5 85Wer nicht gleich in der Manpage stöbern will, bekommt mit vmstat x eine Kurzanleitung für den Gebrauch dieses nützlichen Tools.
Platz ist in der kleinsten Hütte
Ich habe beim Aufspielen meines Linuxsystems offenbar eine zu kleine Swappartition angelegt. Kann ich den Swapspeicher auch ohne Umpartitionierung aufrüsten?
Dr. Linux: Als temporäre Lösung bietet sich hier eine – ggf. von Windows her bekannte – Swapdatei an. Linux kennt zwei Möglichkeiten der Datenauslagerung aus dem RAM auf die Festplatte:
- Beim Installieren Ihres System haben Sie unweigerlich die Swappartition kennen gelernt. Das ist die erste und schnellere Möglichkeit.
- Seltener genutzt wird die Swapdatei. Sie arbeitet langsamer als eine Swappartition. Linux kann bis zu 16 Swapbereiche gleichzeitig verwalten, daher lassen sich Swapdateien bei Bedarf einfach "dazu schalten".
Das Anlegen und Anmelden einer Swapdatei wird vom Superuser auf der Kommandozeile erledigt. Ersteres geschieht mit dem Befehl
root# dd if=/dev/zero of=Dateiname bs=1024 count=Dateigrösse_in_Kilobyte
Er kopiert die Datei /dev/zero in den angegebenen Dateinamen. Als Dateigröße tragen Sie einen Wert zwischen 40 und 131073 Kilobyte ein. Die Angabe 131073 legt eine rund 128 Megabyte große Datei an, das ist der Höchstwert für Swapspeicher. Die kleinste verwaltbare Menge von 40 Kilobyte ist zum Anlegen eines Swapbereichs nicht gerade sinnvoll.
Durch den Befehl
root# mkswap Dateiname Dateigrösse_in_Kilobyte
erhält die Datei eine Swap-Kennzeichung. Erst dann lässt sich die Datei als Auslagerungsspeicher nutzen. Sie können sich diesen Vorgang vorstellen wie das Einrichten eines Dateisystems mit dem Befehl mkfs.
Bevor Sie die neue Datei im System anmelden, stellen Sie sicher, dass nur der Superuser Lese- und Schreibrecht darauf hat. Sonst wird Ihr System die falschen Rechte bemängeln bzw. mit Fehlermeldungen den Zugriff auf den neuen Swapbereich verweigern. Im Zweifelsfall legen Sie mit chmod 0600 Dateiname die korrekten Berechtigungen fest.
Zuletzt melden Sie den neuen Speicher mit dem Befehl
root# swapon Dateiname
beim System an. Ab sofort steht Ihnen der Swapspeicher zur Verfügung.
In Listing 1 sehen Sie die Rückmeldungen, die Linux produziert, während Sie eine Swapdatei erstellen. Zwischen den Befehlen zum Erstellen der Datei wird hier noch der Befehl sync abgesetzt. Dieser stellt sicher, dass alles auf die Festplatte geschrieben wird, bevor das nächste Kommando weitere Aktionen ausführt. Mit
root# swapoff Dateiname
melden Sie den zusätzlichen Swapspeicher beim System wieder ab, wenn Sie ihn nicht mehr benötigen.
Listing 1
Erstellen und Anmelden einer Swapdatei unter Linux
root@maxi:/ # dd if=/dev/zero of=swapdatei bs=1024 count=131073 131073+0 Records ein 131073+0 Records aus root@maxi:/ # sync root@maxi:/ # mkswap swapdatei 131073 Auslagerungsbereich Version 1 mit einer Größe von 134213632 Bytes wird angelegt. root@maxi:/ # sync root@maxi:/ # chmod 0600 swapdatei root@maxi:/ # swapon -v swapdatei swapon für swapdatei
Glossar
mount
Mit diesem Kommando geschieht das Einbinden von Datenträgern (z.B. Festplattenpartitionen und CDs) in das Linux-Dateisystem. Dies ist normalerweise root vorbehalten. Ehe man eine gemountete CD oder Diskette wieder aus dem Laufwerk entnehmen kann, ist ein umount-Befehl zwingend nötig. Auch Festplattenpartitionen lassen sich so dem Zugriff unter Linux wieder entziehen.
Dateisysteme
Die Art und Weise, wie Daten auf einem Datenträger organisiert werden, unterscheidet sich für verschiedene Betriebssysteme und unterschiedliche Speichermedien. Beispielsweise ist unter Windows 9x in der Regel eine Erweiterung des DOS-Dateisystems FAT namens VFAT im Einsatz, während Linux seine Daten-Partitionen gern im ext2-Filesystem vorliegen hat. Auf Daten-CDs kommt hingegen iso9660 zum Einsatz.
Kilobyte
Speicher ist in Speicherzellen unterteilt, die entweder den Wert 0 oder 1 enthalten. Eine solche Speicherzelle bzw. die in ihr gespeicherte Information heißt Bit. Mehrere Bits können in Einheiten wie Byte, Wort oder Langwort zusammengefasst werden: Ein Byte beispielsweise entspricht acht Bit. Dies reicht aus, um einen (lateinischen) Buchstaben zu speichern. Das Wort "Platz" braucht demnach fünf Byte Speicherplatz. Eine Seite Text enthält ca. 1500 Zeichen und benötigt daher unformatiert ca. 1500 Byte zum Speichern. Ein Kilobyte (kB, kByte) entspricht übrigens nicht 1000, sondern 1024 Byte. Ein Kilobyte mal einem Kilobyte ergibt ein Megabyte (MB, MByte), das sind genau 1 048 576 Byte. Ein Gigabyte (GByte), also ein Kilobyte malgenommen mit einem Kilobyte mal einem Kilobyte, sind sehr viele Byte, nämlich 1 073 741 824.
/etc/fstab
Diese Konfigurationsdatei wird vom Programm mount benutzt, um beim Systemstart Festplatten(partitionen) u.a. Datenträger ins Dateisystem einzuhängen und Informationen für spätere Mount-Aktionen vorzuhalten. Die ersten vier Spalten in der Datei sind die interessantesten: Die erste gibt das einzubindende Gerät an, die zweite den Mountpoint, die dritte die Art des auf dem Datenträger verwendeten Dateisystems. Die mount-Optionen stehen in der vierten Spalte. Das folgende Beispiel hängt das Wurzel-Dateisystem auf der ersten Partition der ersten SCSI-Festplatte automatisch beim Booten ein, das ATAPI-(IDE-)CDROM hingegen (noauto) nicht. Allerdings haben normale Anwender später dank der Option user die Möglichkeit, mit dem Befehl mount /cdrom eine eingelegte Daten-CD nur lesbar ("read only") unter /cdrom zugänglich zu machen.
Mountpoint
Das Verzeichnis, unter dem die Dateien eines Datenträgers "eingehängt" werden, damit man auf sie unter Linux u.a. Unixbetriebssystemen zugreifen kann.
/dev/zero
Der Inhalt des Zero-Geräts besteht, wie der Name schon andeutet, aus (unendlich) vielen Nullen. Alles, was in diese Spezialdatei geschrieben wird, wird gelöscht.



