|
|
SwappingNeben den Datenpartionen verwendet UNIX eine Partition zum Swappen. Unter Swapping versteht man das Ein- und Auslagern von Prozessen aus dem Hauptspeicher auf die Festplatte. UNIX lagert Prozesse, die längere Zeit nicht aktiv wurden aus, wenn es im Hauptspeicher eng wird. Dadurch ist es möglich, dass mehr Prozesse gestartet sind, als in den Hauptspeicher passen. Nun ist das Auslagern auf Platte und das Zurückholen in den Hauptspeicher ein recht zeitaufwändiges Verfahren, da die Platte einen sehr viel langsameren Zugriff hat als Hauptspeicher. Tatsächlich belastet das Swappen das System beim ersten Auftreten von Speicherengpässen erheblich. Je länger das System allerdings läuft, desto ruhiger wird es, weil mit der Zeit diejenigen Hintergrundprozesse ausgelagert werden, die selten zum Einsatz kommen. Solche Hintergrundprozesse, die nur auf ein bestimmtes Ereignis warten, um aktiv zu werden und die restliche Zeit schlafen, gibt es in einem UNIX-System in großer Zahl. Insofern ist es auch nicht beunruhigend, wenn der Swapbereich belegt ist. Kritisch wird es erst dann, wenn Bewegung ins Spiel kommt, wenn also das System häufig auslagern muss. Dann sollte man den Hauptspeicher erweitern, weil das ständige Auslagern auf Platte die Maschine belastet. Wenn der Speicher derart überlastet ist, dass die Maschine ständig die Prozesse ein- und auslagert und sonst fast nicht mehr arbeitet, redet man vom Thrashing. An sich ist die Bezeichnung Swappen nicht mehr ganz korrekt, da es an sich das Auslagern ganzer Prozesse bezeichnet. Heutige Systeme arbeiten längst mit Pagingverfahren. Das bedeutet, dass das Auslagern nicht mehr auf Prozessebene stattfindet, sondern dass Speicherseiten fester Größe ausgelagert werden. Man kann sich das so vorstellen, dass der Hauptspeicher in Kacheln gleicher Größe aufgeteilt ist und das System kontrolliert, welche Kachel wie oft benutzt wird. Auf diese Weise können Prozesse teils im RAM und teils auf der Platte liegen. Das Paging ist aufwändiger, aber auch wesentlich effizienter als das Swapping. Man spricht auch von virtuellem Speicher, da der Prozess nicht merkt, dass sich sein Speicher zum Teil eigentlich auf der Platte befindet.
Nachdem die Partition für das Swappen festgelegt ist, muss beispielsweise bei
Linux analog zum Anlegen eines Dateisystems auch die Swap-Partion initialisiert
werden. Dazu dient der Befehl
Das Swappen wird beim Systemstart in einem rc-Skript gestartet. Der Befehl
zum Aktivieren lautet Über die Größe der Swap-Partition gibt es unterschiedliche Aussagen. Die Faustregel, den Hauptspeicher noch einmal als Swap zu nehmen, stammt wohl daher, dass das System im Falle eines Kernel-Panic, also eines Totalzusammenbruchs des Betriebssystems, einen Speicherabzug in die Swap-Partition schreibt. Abgesehen von dieser Überlegung ist die Regel wenig sinnvoll, da die Summe aus Swap-Partition und RAM den virtuellen Speicher ausmachen. Wenn also das RAM bereits knapp ist, sollte der Swapbereich großzügig sein. Ist jede Menge RAM im System, kann man vielleicht sogar ganz ohne Swap-Partition auskommen und nur als Sicherheit noch eine Swapdatei anlegen. Die Summe aus RAM und Swapbereich sollte auch im schlimmsten Fall noch ausreichend sein. Fast jedes UNIX verwendet eine Swap-Partition und keine Datei. Der Vorteil liegt in der Geschwindigkeit. Der Zugriff auf die Swap-Partition erfolgt wesentlich schneller als der Zugriff über das Dateisystem. Der Nachteil ist, dass man zum Installationszeitpunkt festlegen muß, welche Größe der Swapbereich benötigen wird.
SwapdateienEinige UNIX-Systeme können auch mit Swapdateien arbeiten. Dies kann eine schnelle Lösung sein, wenn der Swapbereich zu eng wird und eine erneute Partitionierung vermieden werden soll. Es ist aber vor allem eine dynamische Lösung, die kurzfristige, extreme Spitzen abfängt. Installiert man auf einem System zusätzlich zur Swap-Partition eine Swapdatei, wird es auch dann keinen Programmabbruch wegen zu wenig Speicher geben, wenn plötzlich mehr Prozesse gestartet werden, als je voraussehbar war.
Unter HP-UX kann am einfachsten über das Administrationstool
/dev/vg00/lvol8 /users hfs rw,suid 0 2 /dev/vg00/lvol8 /users swapfs min=3840,lim=12800,pri=2 0 2
In der oberen Zeile sieht man, dass das Plattendevice lvol8 ein
normales hfs-Dateisystem ist. Es wird auch tatsächlich für Benutzerdaten
verwendet. Daneben liegt aber auch im Verzeichnis /users das so
genannte Dateisystempaging. Betrachtet man den Inhalt von /users, findet
man dort ein Verzeichnis namens paging, in dem mehrere Dateien
liegen, die zum Swappen verwendet werden.
Die Parameter geben übrigens an, dass mindestens 3840 Blöcke verwendet werden
sollen. Das Limit (
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|