Memory Paging

Ferranti AtlasEdit

Der erste Computer, der Paging unterstützte, war der Supercomputer Atlas, der 1963 gemeinsam von Ferranti, der University of Manchester und Plessey entwickelt wurde. Die Maschine hatte einen assoziativen (inhaltsadressierbaren) Speicher mit einem Eintrag für jede 512-Wort-Seite. Der Supervisor behandelte Nichtäquivalenzunterbrechungen und verwaltete die Übertragung von Seiten zwischen Core und Drum, um Programmen einen einstufigen Speicher bereitzustellen.

Microsoft WindowsEdit

Fenster 3.x und Windows 9xEdit

Paging ist seit Windows 3.0 im Jahr 1990 eine Funktion von Microsoft Windows. Fenster 3.x erstellt eine versteckte Datei mit dem Namen 386SPART.PAR oder WIN386.SWP zur Verwendung als Auslagerungsdatei. Es befindet sich im Allgemeinen im Stammverzeichnis, kann jedoch an anderer Stelle (normalerweise im WINDOWS-Verzeichnis) angezeigt werden. Seine Größe hängt davon ab, wie viel Swap-Speicherplatz das System hat (eine Einstellung, die vom Benutzer unter Systemsteuerung → Erweitert unter “Virtueller Speicher” ausgewählt wurde). Wenn der Benutzer diese Datei verschiebt oder löscht, wird beim nächsten Start von Windows ein blauer Bildschirm mit der Fehlermeldung “Die permanente Auslagerungsdatei ist beschädigt” angezeigt. Der Benutzer wird aufgefordert, auszuwählen, ob die Datei gelöscht werden soll oder nicht (unabhängig davon, ob sie vorhanden ist oder nicht).

Windows 95, Windows 98 und Windows Me verwenden eine ähnliche Datei, und die Einstellungen dafür befinden sich unter Systemsteuerung → System → Registerkarte Leistung → Virtueller Speicher. Windows legt die Größe der Auslagerungsdatei automatisch so fest, dass sie bei 1,5 × der Größe des physischen Speichers beginnt und bei Bedarf bis zu 3 × des physischen Speichers erweitert wird. Wenn ein Benutzer speicherintensive Anwendungen auf einem System mit wenig physischem Speicher ausführt, ist es vorzuziehen, diese Größen manuell auf einen höheren Wert als den Standardwert festzulegen.

Windows NTEdit

Die Datei, die für das Paging in der Windows NT-Familie verwendet wird, ist pagefile.sys. Der Standardspeicherort der Auslagerungsdatei befindet sich im Stammverzeichnis der Partition, auf der Windows installiert ist. Windows kann so konfiguriert werden, dass freier Speicherplatz auf allen verfügbaren Laufwerken für Auslagerungsdateien verwendet wird. Es wird jedoch für die Boot-Partition (d.h., das Laufwerk, das das Windows-Verzeichnis enthält), um eine Auslagerungsdatei darauf zu haben, wenn das System so konfiguriert ist, dass nach einem Bluescreen des Todes entweder Kernel- oder vollständige Speicherabbilder geschrieben werden. Windows verwendet die Auslagerungsdatei als temporären Speicher für den Speicherauszug. Wenn das System neu gestartet wird, kopiert Windows den Speicherauszug aus der Auslagerungsdatei in eine separate Datei und gibt den in der Auslagerungsdatei verwendeten Speicherplatz frei.

FragmentationEdit

Dieser Abschnitt muss aktualisiert werden. Bitte helfen Sie mit, diesen Artikel zu aktualisieren, um die jüngsten Ereignisse oder neu verfügbaren Informationen widerzuspiegeln. (Juli 2014)

In der Standardkonfiguration von Windows darf die Auslagerungsdatei bei Bedarf über ihre ursprüngliche Zuordnung hinaus erweitert werden. Wenn dies schrittweise geschieht, kann es stark fragmentiert werden, was möglicherweise zu Leistungsproblemen führen kann. Um dies zu vermeiden, wird häufig empfohlen, eine einzelne “gesperrte” Seitendateigröße festzulegen, damit Windows sie nicht erweitert. Die Auslagerungsdatei wird jedoch nur erweitert, wenn sie gefüllt wurde, was in der Standardkonfiguration 150% der Gesamtmenge des physischen Speichers ausmacht. Daher muss der Gesamtbedarf an auslagerungsdateigestütztem virtuellem Speicher 250% des physischen Speichers des Computers überschreiten, bevor die Auslagerungsdatei erweitert wird.

Die Fragmentierung der Auslagerungsdatei, die auftritt, wenn sie erweitert wird, ist temporär. Sobald die erweiterten Regionen nicht mehr verwendet werden (beim nächsten Neustart, wenn nicht früher), werden die zusätzlichen Speicherplatzzuweisungen freigegeben und die Auslagerungsdatei befindet sich wieder in ihrem ursprünglichen Zustand.

Das Sperren einer Auslagerungsdateigröße kann problematisch sein, wenn eine Windows-Anwendung mehr Speicher anfordert als die Gesamtgröße des physischen Speichers und der Auslagerungsdatei. Außerdem wird die Auslagerungsdatei selten in sequenzieller Reihenfolge gelesen oder geschrieben, sodass der Leistungsvorteil einer vollständig sequentiellen Auslagerungsdatei minimal ist. Eine große Auslagerungsdatei ermöglicht jedoch im Allgemeinen die Verwendung speicherintensiver Anwendungen, ohne dass neben der Verwendung von mehr Speicherplatz auch Strafen anfallen. Während eine fragmentierte Auslagerungsdatei möglicherweise kein Problem darstellt, führt die Fragmentierung einer Auslagerungsdatei variabler Größe im Laufe der Zeit zu mehreren fragmentierten Blöcken auf dem Laufwerk, wodurch andere Dateien fragmentiert werden. Aus diesem Grund ist eine zusammenhängende Auslagerungsdatei mit fester Größe besser, vorausgesetzt, die zugewiesene Größe ist groß genug, um den Anforderungen aller Anwendungen gerecht zu werden.

Der erforderliche Speicherplatz kann auf Systemen mit neueren Spezifikationen (z. b. ein System mit 3 GB Arbeitsspeicher mit einer Auslagerungsdatei fester Größe von 6 GB auf einem 750-GB-Laufwerk oder ein System mit 6 GB Arbeitsspeicher und einer Auslagerungsdatei fester Größe von 16 GB und 2 TB Festplattenspeicher). In beiden Beispielen belegt das System etwa 0,8% des Festplattenspeichers, wobei die Auslagerungsdatei auf ihr Maximum vorverlängert ist.

Das Defragmentieren der Auslagerungsdatei wird gelegentlich auch empfohlen, um die Leistung zu verbessern, wenn ein Windows-System chronisch viel mehr Speicher als den gesamten physischen Speicher verwendet. Diese Ansicht ignoriert die Tatsache, dass abgesehen von den temporären Ergebnissen der Erweiterung die Auslagerungsdatei im Laufe der Zeit nicht fragmentiert wird. Im Allgemeinen werden Leistungsprobleme im Zusammenhang mit dem Zugriff auf Auslagerungsdateien durch Hinzufügen von mehr physischem Speicher viel effektiver behoben.

Unix und Unix-ähnliche Systeme

Unix-Systeme und andere Unix-ähnliche Betriebssysteme verwenden den Begriff “Swap”, um den Vorgang des Ersetzens von Speicherplatz für RAM zu beschreiben, wenn der physische RAM voll ist. In einigen dieser Systeme ist es üblich, eine gesamte Partition einer Festplatte für den Austausch zu reservieren. Diese Partitionen werden Swap-Partitionen genannt. Viele Systeme haben eine ganze Festplatte, die dem Swapping gewidmet ist, getrennt von den Datenlaufwerken, die nur eine Swap-Partition enthalten. Eine Festplatte, die dem Tauschen gewidmet ist, wird als “Swap-Laufwerk” oder “Scratch-Laufwerk” oder “Scratch-Disk” bezeichnet. Einige dieser Systeme unterstützen nur das Tauschen auf eine Swap-Partition; andere unterstützen auch das Tauschen auf Dateien.

LinuxEdit

Siehe auch: Swap-Partitionen auf SSDs, zswap und zram

Der Linux-Kernel unterstützt eine praktisch unbegrenzte Anzahl von Swap-Backends (Geräte oder Dateien) und unterstützt auch die Zuweisung von Backend-Prioritäten. Wenn der Kernel Seiten aus dem physischen Speicher auslagert, verwendet er das Backend mit der höchsten Priorität und dem verfügbaren freien Speicherplatz. Wenn mehreren Swap-Backends dieselbe Priorität zugewiesen wird, werden sie in einem Round-Robin-Modus verwendet (ähnlich wie bei RAID 0-Speicherlayouts), wodurch die Leistung verbessert wird, solange auf die zugrunde liegenden Geräte effizient parallel zugegriffen werden kann.

Swap-Dateien und partitionsEdit

Aus der Sicht des Endbenutzers Swap-Dateien in Versionen 2.6.x und höher des Linux-Kernels sind praktisch so schnell wie Swap-Partitionen; Die Einschränkung besteht darin, dass Swap-Dateien zusammenhängend auf ihren zugrunde liegenden Dateisystemen zugewiesen werden sollten. Um die Leistung von Auslagerungsdateien zu erhöhen, speichert der Kernel eine Karte, wo sie sich auf den zugrunde liegenden Geräten befinden, und greift direkt auf sie zu, um den Cache zu umgehen und den Dateisystem-Overhead zu vermeiden. Unabhängig davon empfiehlt Red Hat die Verwendung von Swap-Partitionen. Wenn Sie sich auf Festplatten befinden, bei denen es sich um rotierende magnetische Mediengeräte handelt, besteht ein Vorteil der Verwendung von Swap-Partitionen in der Möglichkeit, sie auf zusammenhängenden Festplattenbereichen zu platzieren, die einen höheren Datendurchsatz oder eine schnellere Suchzeit bieten. Die administrative Flexibilität von Auslagerungsdateien kann jedoch bestimmte Vorteile von Auslagerungspartitionen überwiegen. Zum Beispiel kann eine Auslagerungsdatei auf jedem gemounteten Dateisystem abgelegt, auf jede gewünschte Größe eingestellt und nach Bedarf hinzugefügt oder geändert werden. Swap-Partitionen sind nicht so flexibel; sie können nicht vergrößert werden, ohne Partitionierungs- oder Volume-Management-Tools zu verwenden, die verschiedene Komplexitäten und potenzielle Ausfallzeiten mit sich bringen.

SwappinessEdit

Swappiness ist ein Linux-Kernel-Parameter, der das relative Gewicht steuert, das dem Auslagern von Laufzeitspeicher im Gegensatz zum Löschen von Seiten aus dem Systemseiten-Cache zugewiesen wird, wenn eine Speicherzuweisungsanforderung nicht aus freiem Speicher erfüllt werden kann. Swappiness kann auf Werte zwischen 0 und 200 (inklusive) eingestellt werden. Ein niedriger Wert bewirkt, dass der Kernel es vorzieht, Seiten aus dem Seitencache zu entfernen, während ein höherer Wert bewirkt, dass der Kernel es vorzieht, “kalte” Speicherseiten auszutauschen. Der Standardwert ist 60; Wenn Sie ihn höher einstellen, kann dies zu einer hohen Latenz führen, wenn kalte Seiten wieder ausgetauscht werden müssen (z. B. bei der Interaktion mit einem Programm, das im Leerlauf war), während die Einstellung niedriger (sogar 0) zu einer hohen Latenz führen kann, wenn Dateien, die aus dem Cache entfernt wurden, erneut gelesen werden müssen. Swapping kann auch Festplatten weiter verlangsamen, da es viele zufällige Schreibvorgänge beinhaltet, während SSDs dieses Problem nicht haben. Sicherlich funktionieren die Standardwerte in den meisten Workloads gut, aber Desktops und interaktive Systeme für jede erwartete Aufgabe möchten die Einstellung möglicherweise verringern, während Stapelverarbeitung und weniger interaktive Systeme sie möglicherweise erhöhen möchten.

Swap deathEdit

Wenn der Systemspeicher für die aktuellen Aufgaben stark unzureichend ist und ein großer Teil der Speicheraktivität einen langsamen Swap durchläuft, kann das System praktisch keine Aufgabe ausführen, selbst wenn die CPU im Leerlauf ist. Wenn jeder Prozess auf den Swap wartet, wird das System als Swap-Tod betrachtet.

Swap-Tod kann aufgrund falsch konfigurierter Speicherüberbelegung auftreten.

Die ursprüngliche Beschreibung des Problems “Swapping to death” bezieht sich auf den X-Server. Wenn Code oder Daten, die vom X-Server verwendet werden, um auf einen Tastendruck zu reagieren, nicht im Hauptspeicher sind, nimmt der Server einen oder mehrere Seitenfehler auf, wenn der Benutzer einen Tastendruck eingibt. Wenn diese Seiten nicht im Speicher verbleiben, müssen sie erneut fehlerhaft eingegeben werden, um den nächsten Tastendruck zu verarbeiten, sodass das System praktisch nicht mehr reagiert, selbst wenn es tatsächlich andere Aufgaben normal ausführt.

macOSEdit

macOS verwendet mehrere Auslagerungsdateien. Die Standardinstallation (und von Apple empfohlen) platziert sie auf der Root-Partition, obwohl es möglich ist, sie stattdessen auf einer separaten Partition oder einem separaten Gerät zu platzieren.

AmigaOS 4Edit

AmigaOS 4.0 führte ein neues System zur Zuweisung von RAM und Defragmentierung des physischen Speichers ein. Es verwendet immer noch einen gemeinsam genutzten Adressraum, der nicht defragmentiert werden kann. Es basiert auf der Plattenzuordnungsmethode und dem Auslagerungsspeicher, der das Austauschen ermöglicht. Paging wurde in AmigaOS 4.1 implementiert, kann aber das System sperren, wenn der gesamte physische Speicher aufgebraucht ist. Der Swap-Speicher kann jederzeit aktiviert und deaktiviert werden, sodass der Benutzer nur physischen RAM verwenden kann.

Leave a Reply