Zusammenfassung
Ein Auslagerungsbereich (als Auslagerungspartition, Auslagerungsdatei oder Auslagerungsdatei bezeichnet) ist nur ein Mechanismus zur Erweiterung des vom Betriebssystem adressierbaren physischen Speichers.
Wenn Sie nur noch wenig physischen Arbeitsspeicher zur Verfügung haben und auf dem heutigen Rechner, würde ich sagen, wenn Sie 4 GB oder weniger RAM haben. Dann sollten Sie wahrscheinlich einen Swap haben. Dies hängt jedoch von Ihrer Arbeitsbelastung und der Art und Weise ab, wie Sie Ihre Maschine verwenden.
Wenn Sie mehr als 4 GB RAM haben, besteht eine gute Chance, dass Ihr System den Swap niemals verwendet. Wenn also der Swap aktiviert ist oder nicht, ändert sich nicht viel.
Dies hängt zwar von anderen Faktoren ab, aber je länger Ihr Computer in Betrieb ist, desto wahrscheinlicher wird das Betriebssystem einen kleinen, nicht genutzten Teil des Arbeitsspeichers in den Auslagerungsspeicher auslagern, obwohl anscheinend noch genügend Platz vorhanden ist. Häufig verwendet das System jedoch den "freien" RAM für Dateipuffer und anderes Material, und aufgrund einer gewissen Arbeitslast wird der Dateipuffer möglicherweise den gesamten verfügbaren RAM verwenden.
Hintergrundinformation
Was würde passieren, wenn Sie die Auslagerung deaktivieren und Ihr Speicher vollständig belegt ist? Nun, wenn eine Anwendung das nächste Mal mehr Speicher anfordert (wie bei einem Malloc oder Realloc), wird eine Fehlermeldung ausgegeben! Wenn es richtig codiert ist, wird es von der Anwendung erkannt, aber die ordnungsgemäße Behandlung eines solchen Fehlers und das ordnungsgemäße Beenden des Programms können dennoch eine Herausforderung darstellen! Viele Entwickler testen jedoch nicht, ob die Speicherzuweisung erfolgreich ist, und häufig stürzt die Anwendung ab, sobald dieser nicht zugewiesene Speicher verwendet wird. Daher besteht eine hohe Wahrscheinlichkeit, dass die Anwendung abstürzt, und tatsächlich, dass viele Anwendungen abstürzen, da in der Regel mehrere Anwendungen gleichzeitig ausgeführt werden. Hoffentlich sollte der Kernel selbst immun sein, aber meiner Erfahrung nach war dies nicht immer der Fall.
Wenn Sie Swap haben, haben Sie das gleiche Verhalten , aber Sie haben ein höheres Limit, so dass die Wahrscheinlichkeit besteht, dass Sie dieses Limit nicht erreichen.
Ich habe 2 Maschinen mit 8 und 16 GB RAM. Mein persönlicher Gebrauch dieser Maschine sollte mich niemals dazu bringen, all diesen RAM zu nutzen (heute! Vielleicht in ein paar Jahren könnte das anders sein). Der einzige Grund, warum ich die physischen RAM-Grenzen überschreiten würde, ist, dass ein Prozess nicht mehr funktioniert und den gesamten RAM verbraucht. Kein Swap zu haben ist eine Erleichterung, der Kernel bricht den Rogue-Prozess sofort ab, sobald er das RAM-Limit erreicht. Wenn Sie Swap haben, werden Sie eine schmerzhafte Erfahrung bekommen (vielleicht nicht auf SSD ...), da Ihr System tauschen und tauschen und tauschen wird und manchmal völlig nicht mehr reagiert, bis Ihr Kernel hoffentlich den Täter tötet!
Berät
Sie sollten sich nicht davor fürchten, wenn Ihnen jemand sagt, dass etwas fürchterliches nicht in Ordnung ist, wenn Sie Swap entfernen. Wenn Sie dies tun, wird Ihr physischer Adressraum reduziert, ähnlich wie wenn Sie von 4 GB RAM auf 2 GB wechseln würden. Würden Sie so etwas tun? Dann sollten Sie den Swap nicht entfernen. Sie können jedoch entscheiden, es zu begrenzen, und das wäre weise .
Wenn man denkt, dass seine Arbeitslast ihn dazu bringen könnte, mehr oder weniger als den verfügbaren physischen RAM zu nutzen, oder wenn man viel E / A benötigt (Lesen / Schreiben auf Datenträger), sollte Swap beibehalten werden.
Wenn Swap beibehalten werden soll, sollte ein Benutzer versuchen, die Speicherkapazität, die ein Prozess verwenden kann, zu begrenzen. Auf einem Linux-System könnte man cgroups-Speicherlimits verwenden, um zu vermeiden, dass ein Prozess außer Kontrolle gerät. Ich kenne das Äquivalent unter OS X nicht, aber das sollte so sein.
Wenn jedoch mehr als genug Speicher für seine Arbeitslast verfügbar ist, kann er Swap sicher deaktivieren oder beibehalten. Auch in Bezug auf die Leistung ändert sich nicht viel, denn wenn das System den Swap nicht verwendet, wird kein Leistungseinbruch festgestellt (besonders auf einer alten Rotationsfestplatte, weniger auf einer SSD).
Die Verwendung des gleichen Tricks wie oben, um zu versuchen, Speicherbeschränkungen pro Prozess oder Gruppe von Prozessen festzulegen, ist auch im Fall von mehr als genügend verfügbarem RAM von Vorteil.
Mein eigenes Beispiel
Ich habe einen alten PC mit 1 GB RAM, dort habe ich einen großen Swap: 4 GB, damit ich Firefox und andere Anwendungen darauf ausführen kann. Ich neige dazu, so wenig Anwendungen (oder Tabs in Firefox) wie möglich zu verwenden, um eine korrekte Benutzererfahrung zu erzielen.
Ich habe einen kleinen Server mit 8 GB RAM. Dort kenne ich meine Arbeitslast genau und möchte nicht, dass mein Server langsamer wird, da ein Prozess nicht mehr funktioniert und den gesamten Speicher belegt. Dort habe ich kein Swap- und Cgroup-Speicherlimit, wodurch Anwendungen oder Dienste abstürzen können, aber nicht der Kernel. Übrigens ist dies eine Linux-Maschine.
Dann habe ich meinen Mac mit 16 GB RAM. Ich bin nicht der einzige Benutzer, und es würde uns nichts ausmachen, beim Benutzerwechsel zu warten. Da wir Swap haben, ist es für mich schwierig, die Arbeitsauslastung anderer Benutzer dieses Computers zu planen. Selbst wenn ich der einzige wäre, würde ich Swap verwenden. Ich führe oft mehrere VMs aus und verwende speicherintensive Anwendungen, aber nicht alle gleichzeitig. Daher würde es mir nichts ausmachen, wenn das Betriebssystem in einer nicht verwendeten App ausgetauscht wird, damit ich schnellere Festplatten-E / A-Vorgänge ausführen oder eine weitere VM starten kann. Bisher habe ich noch keinen Maschinenwechsel gesehen!