Ruhezustand (oder Suspend to Disk). Ein echter Ruhezustand schaltet das System vollständig aus, sodass der Inhalt des Arbeitsspeichers verloren geht und Sie den Status in einem dauerhaften Speicher speichern müssen. AKA-Swap. Im Gegensatz zu Windows mit hiberfil.sys
und pagefile.sys
verwendet Linux Auslagerungsspeicher sowohl für überbelegten Speicher als auch für den Ruhezustand.
Auf der anderen Seite scheint der Ruhezustand etwas knifflig zu sein, um unter Linux gut zu funktionieren. Ob man tatsächlich überwintern "kann", ist eine andere Sache. ¯\_(ツ)_/¯
Was kann mit Swap getan werden, was nicht auch durch Hinzufügen von RAM möglich wäre?
Diese Frage könnte eigentlich umformuliert werden in Was kann mit nichtflüchtigem RAM getan werden, was nicht auch durch Hinzufügen von mehr flüchtigem RAM getan werden würde? . Nur weil Sie zufällig eine Partition für das Paging (eine dedizierte Art der Interaktion mit flüchtigem RAM) reserviert haben, ändert dies nichts an der Tatsache, dass sie immer noch Teil eines persistenten sekundären Speichermediums ist. Eine Swap-Partition ist auch nicht zwingend erforderlich, um ein System in den Ruhezustand zu versetzen, es kann auch eine „Swap-Datei“ verwendet werden, die auf einer bereits vorhandenen Partition erstellt wurde.
Ob Sie eine Auslagerungspartition oder eine Auslagerungsdatei verwenden, am Ende werden Sie Dinge speichern, die in den oder aus dem RAM geschrieben werden. Wenn Sie das Netzkabel von einem System mit aktivierter Swap-Partition ziehen würden, würde diese Swap-Partition nicht auf magische Weise gelöscht.
Während diese Auslagerungsdaten beim nächsten Start nicht eingelesen werden (da die Auslagerungsdatei Einträge enthalten würde, die Prozessen entsprechen, die nicht mehr ausgeführt werden), unternehmen einige Distributionen möglicherweise absichtliche Schritte, um sie entweder während eines ordnungsgemäßen Herunterfahrens oder eines ordnungsgemäßen Neustarts zu zerstören , wenn jemand ein Kabel aus einem System ziehen würde, wäre er in der Lage, diese Swap-Partition forensisch zu untersuchen.
Was den Fall der von Ihnen erwähnten eingebetteten Geräte angeht, nutzt sich Flash als eine Art nichtflüchtiger RAM-Speicher (NVRAM oder EEPROM) ab, da er E/A-Hits verarbeiten kann (Flash Cell Endurance, dargestellt in Bezug auf die Anzahl der Programme). /Löschzyklen) verblasst im Vergleich zu flüchtigem RAM. Jedes Mal, wenn Sie an diese Stelle schreiben, rasieren Sie buchstäblich eine Oxidschicht ab, und schließlich ist einfach kein Oxid mehr vorhanden, um eine dauerhafte Speicherung der Ladung zu ermöglichen, und sie tritt buchstäblich aus, bevor sie anschließend gelesen wird.
Auf der anderen Seite ist die Überlebensfähigkeit des Arbeitsspeichers von Volatile im Vergleich zu Flash praktisch nicht vorhanden (in der Größenordnung von Minuten unter idealen experimentellen Bedingungen), wenn oder wenn Sie die Stromquelle abschalten. Im Fall von flüchtigem RAM gibt es nichts, was das Lecken der Ladung und den entsprechenden Zustand des Flip-Flops (Eingänge, bestimmende Ausgänge, die dann Eingänge neu bestimmen), alias rückkopplungsgesteuerte Latches, aufhalten kann.
32 GB RAM und kein Swap vs. 16 GB RAM mit 16 GB Swap.
So gefragt, spart Swap meistens Geld und erhöht die Leistung pro Dollar, vielleicht auch pro Watt.
Aber Swap ist immer noch mehr als "Speicher so langsam wie eine Festplatte". Es ist ein temporärer Speicher für Speicherseiten, die bei Bedarf direkt (schmutzig wie sie sind, kein Dateisystem-Overhead) in den Arbeitsspeicher geladen werden können.
Natürlich hängt viel von der Belastung ab (der Art der Ladung) und die Idee des Tauschens kann sogar nach hinten losgehen. Deshalb gibt es neben swapon
den Parameter "swappiness". / swapoff
selbst und die Diskussion um die richtige Größe.
Aus Wikipedia habe ich diese Aussage über "swap" in Linux (im "paging" Artikel)
Der Linux-Kernel unterstützt eine praktisch unbegrenzte Anzahl von Swap-Backends (Geräte oder Dateien...
Wenn mehreren Swap-Backends die gleiche Priorität zugewiesen wird, werden sie im Round-Robin-Modus verwendet (was RAID 0-Speicherlayouts etwas ähnlich ist), ...
Das zeigt, dass man das Auslagern auf Hardware-Ebene sinnvoller gestalten kann:Ein dediziertes „Scratch-Laufwerk“ würde diesen ausgelagerten Seiten ein besseres Zuhause geben. Idealerweise sollte ein Scratch-Laufwerk (sehr) klein, aber schnell und robust sein.
Nach der "neuen" Größenregel (Quadrat Wurzel von Giga), sollte Ihr Beispiel vergleichen:
16 GB RAM
+ 0 GB Swap+1000 GB Disk
16 GB RAM
+ 4 GB Swap+ 996 GB Disk
Denn was wirklich keinen Sinn macht ist:
16 GB RAM+0 GB Swap
+ 1000 GB Disk
12 GB RAM+4 GB Swap
+ 1000 GB Disk
Das wäre eine Swap-Partition auf einer tmpfs ("Ramdisk") - vielleicht nicht einmal allzu schädlich, aber ich sehe hier überhaupt keinen Nutzen. Sie können nicht einmal überwintern.
(Siehe unten jedoch für zram und zswap, wenn Sie Komprimierung hinzufügen dazu)
Um Swap zu verstehen, müssen Sie das gesamte System und die durchschnittliche Last betrachten. Und da vm/mm (Virtual Memory Management) ein komplexes System ist, ist es wirklich schwer, einen klaren Vorteil zu nennen. Ich mag die Idee eines "sanften" Übergangs in ein überlastetes System.
Ich habe 8 GB RAM und keinen Swap. Aber trotzdem verteidige ich das Konzept, AFA kann ich verstehen :-)
Ich habe dieses Redhat-Zitat in einem der OP-Links gefunden. Das Szenario ist ein immer größer werdender Speicherbedarf, auf 2 GB RAM + 2 GB Swap, wenn ich mich erinnere:
... In unserem Fall [nur illustriert] ist ziemlich viel Swap verfügbar, also ist die Zeit der schlechten Leistung lang.
Aber die Alternative ist OOM
noch früher!
Die „Zeit der schlechten Leistung“ ist lang, ja, aber die Leistung nimmt nur proportional zur Last ab. Ich kenne den Kontext nicht, vielleicht wollen sie nur vor einem zu großen warnen Swap-Partition. Es klingt Anti-Swap, aber auf den zweiten Blick nicht.
Andererseits habe ich aus dem gleichen Grund keinen Swap. Ich möchte wissen, wann ich und meine Anwendungen an die Decke gehen, und dann werde ich entscheiden, ob ich die Last verringern, mehr RAM kaufen oder eine Partition zum Austauschen aktivieren muss (dafür habe ich ein oder zwei kleine Partitionen bereit).
Ich habe dieses zram nachgeschlagen , und dann zswap Sache:sehr interessant...:
Im Vergleich dazu fungiert zswap als RAM-basierter Cache für Swap-Geräte. Dies stellt zswap einen Eviction-Mechanismus für weniger genutzte ausgelagerte Seiten zur Verfügung, der zram fehlt.
Andererseits zram
funktioniert ohne Wechselgerät. Es macht möglich, was ich gesagt habe, macht keinen Sinn, aber ich habe die Komprimierung nicht berücksichtigt.
Mein Punkt ist diese Räumung Mechanismus, der "Swap" innewohnt. Das kann unter hoher Last sehr nützlich sein, egal ob Sie durch Auslagern oder durch Komprimieren tauschen.