Wie viel SWAP-Speicherplatz auf einem 2-4 GB-System?

53

Wie soll ich entscheiden, wie groß mein Swap auf einem neuen Linux-Rechner (Debian) mit 2-4 GB RAM sein soll? Brauche ich wirklich Swap Space?

Kreuz
quelle
3
2-4 GB sind 5 Jahre später nicht mehr wirklich viel Speicher.
Fifi Finance
@KasperSouren Nein, ist es nicht. War zu der Zeit eine ganze Menge.
C. Ross

Antworten:

54

Es gibt viele Möglichkeiten, herauszufinden, wie viel Swap in einer Maschine verwendet wird. In allgemeinen Vorschlägen werden auf RAM basierende Formeln verwendet, z. B. 2 x RAM, 1,5 x RAM, 1 x RAM, 0,75 x RAM und 0,5 x RAM. Die Formeln variieren in Abhängigkeit von der Größe des Arbeitsspeichers um ein Vielfaches (eine Box mit 1 GB RAM verwendet möglicherweise 2 x RAM-Swap (2 GB), während eine Box mit 16 GB RAM 0,5 x RAM-Swap (8 GB) verwendet.

Eine andere zu berücksichtigende Sache ist, wofür die Box verwendet wird. Wenn eine große Anzahl von Prozessen gleichzeitig auf der Box ausgeführt wird, aber eine erhebliche Anzahl von Prozessen für einen bestimmten Zeitraum inaktiv ist, ist das Hinzufügen eines zusätzlichen Austauschs sinnvoll. Wenn Sie eine kleine Anzahl von kritischen Prozessen ausführen, ist das Hinzufügen eines zusätzlichen Austauschs sinnvoll (dies mag kontraintuitiv erscheinen, aber ich erkläre es gleich). Wenn Sie eine Box als Desktop ausführen, ist es sinnvoll, einen zusätzlichen Swap hinzuzufügen.

Ja, Sie sollten angeben, ob Sie Swap einbeziehen sollen. Sie sollten immer Swap Space einschließen, es sei denn, Sie wissen wirklich , was Sie tun, und Sie haben wirklich einen guten Grund dafür.

Sehen Sie, wie der Linux-Kernel funktioniert, wird Swap nicht nur verwendet, wenn Sie den gesamten physischen Speicher ausgeschöpft haben. Der Linux-Kernel nimmt Anwendungen entgegen, die nicht aktiv sind (inaktiv sind), und verschiebt die Anwendung nach einiger Zeit, um sie aus dem realen Speicher auszutauschen. Wenn Sie diese Anwendung benötigen, kommt es zu einer kurzen Verzögerung (normalerweise nur ein oder zwei Sekunden), während der Speicher der Anwendung vom Auslagerungsspeicher in den Arbeitsspeicher zurückgelesen wird. Und das ist normalerweise eine gute Sache.

Auf diese Weise können Sie inaktive Anwendungen in den Energiesparmodus versetzen und Ihren aktiven Anwendungen Zugriff auf zusätzlichen Arbeitsspeicher gewähren. Außerdem verwendet Linux jeden verfügbaren (nicht zugewiesenen) RAM auf einem Computer als Festplatten-Cache, wodurch die meisten (langsamen) Festplattenaktivitäten schneller und reaktionsschneller werden. Durch das Auslagern inaktiver Prozesse erhalten Sie mehr Festplatten-Cache und Ihr Computer wird insgesamt schneller.

Zum Schluss, seien wir ehrlich, Speicherplatz ist billig. Sehr günstig. Es gibt wirklich keinen guten Grund, einen (relativ) kleinen Teil des Speicherplatzes nicht für den Tausch zu streichen. Wenn ich mit 2 GB - 4 GB RAM auf einem Computer arbeiten würde, würde ich meinen Auslagerungsspeicher wahrscheinlich so einrichten, dass er mindestens dem RAM entspricht. Wenn es weniger als 2 GB RAM wären, würde ich immer noch mindestens 2 GB Swap verwenden.

UPDATE: Wie bereits erwähnt (und ich vergaß einzuschließen), wenn Sie einen Laptop oder Desktop betreiben, den Sie möglicherweise in den Ruhezustand versetzen möchten (Suspend to Disk), möchten Sie immer mindestens so viel Swap, wie Sie Speicher haben. Der Auslagerungsspeicher wird verwendet, um den Inhalt des Arbeitsspeichers im Ruhezustand des Computers zu speichern.

Christopher Cashell
quelle
22
Tolle Antwort, aber Sie haben nur eines vergessen. Wenn es sich um einen Desktop oder Laptop handelt, stellen Sie sicher, dass der Swap mindestens so groß ist wie der Arbeitsspeicher, damit Sie Ihren Computer in den Ruhezustand versetzen können. Dies spart den RAM zum Tauschen.
Sander Marechal
4
Guter Eintrag. Sander schlug mich zu dem einzigen, was ich hinzufügen wollte. Wenn Sie über mehrere Laufwerke verfügen und Ihren Swap auf ein Laufwerk setzen, auf dem sich nicht alle aktiven Dateisysteme befinden, kann dies die Leistung verbessern, da es nicht so viele Konflikte gibt.
GreenKiwi
Wie ich im vergangenen Sommer herausgefunden habe, müssen Sie über einen großen Swap-Bereich verfügen, wenn Sie Java
warren
Wenn der Benutzer über einen Arbeitsspeicher verfügt, der viel größer ist als der tatsächliche Arbeitsspeicher (16 GB / 32 GB) auf einem Desktop-Computer mit 100% Betriebszeit (ohne Ruhezustand), schlagen Sie dennoch vor, Prozesse anzufordern, die an SWAP gesendet werden sollen? Mir scheint, es wäre von Vorteil, alles auf dem RAM zu belassen, es sei denn, Sie nähern sich jemals der Kapazität.
EarthMeLon
1
@earthmeLon - Ich würde vorschlagen, immer noch ein bisschen zu tauschen. Festplatten sind heutzutage groß und billig, so dass der Verlust von ein paar GB Festplattenspeicher für den Austausch vernachlässigbar gering ist. Wenn Sie über einen Swap-Platz verfügen, können Sie eine Versicherung abschließen, falls etwas mehr RAM verbraucht, als Sie erwarten.
Christopher Cashell
17

Red Hat empfiehlt die folgende Formel für Server mit viel RAM:

if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB

Wenn Ihr System über 1 GB RAM verfügt, beträgt Ihr Swap 2 GB, für 16 GB sind es 18 GB.

PEra
quelle
3
Relevanter Link aus dem RHEL6-Speicherhandbuch: docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/…
Ophidian
Ein Server wäre ziemlich ins Stocken geraten, wenn er konsequent 1 GB Swap verwenden würde, da sein RAM voll wäre.
user2284570
12

Späte Antwort, und ich denke, dies wurde in der ausgewählten Antwort ziemlich genau behandelt, aber die Antwort von @ssapkota hier enthält einige gute und leicht verdauliche Informationen (kopieren / einfügen unten).

Hier ist eine sehr gute Empfehlung von RedHat: Empfohlener System Swap Space

Ein Auszug aus demselben Link:

In den vergangenen Jahren hat sich die empfohlene Größe des Auslagerungsspeichers linear mit der Größe des Arbeitsspeichers im System erhöht. Da die Speicherkapazität in modernen Systemen jedoch auf Hunderte von Gigabyte angestiegen ist, wird erkannt, dass die für ein System erforderliche Swap-Speicherkapazität von der auf diesem System ausgeführten Arbeitsspeicherauslastung abhängt. Angesichts der Tatsache, dass der Auslagerungsspeicher normalerweise zum Zeitpunkt der Installation festgelegt wird und es schwierig sein kann, die Arbeitsspeicherauslastung eines Systems im Voraus zu bestimmen , empfehlen wir, den Systemauslagerungsspeicher anhand der folgenden Tabelle zu bestimmen.

Aktuelle Tabelle (Stand Dezember 2012):

Amount of RAM in the system   Recommended swap space         Recommended swap space 
                                                             if allowing for hibernation
---------------------------   ----------------------------   ---------------------------
2GB of RAM or less            2 times the amount of RAM      3 times the amount of RAM
2GB to 8GB of RAM             Equal to the amount of RAM     2 times the amount of RAM
8GB to 64GB of RAM            0.5 times the amount of RAM    1.5 times the amount of RAM
64GB of RAM or more           4GB of swap space              No extra space needed

Originaltabelle:

Amount of RAM in the System     Recommended Amount of Swap Space
4GB of RAM or less              a minimum of 2GB of swap space
4GB to 16GB of RAM              a minimum of 4GB of swap space
16GB to 64GB of RAM             a minimum of 8GB of swap space
64GB to 256GB of RAM            a minimum of 16GB of swap space
256GB to 512GB of RAM           a minimum of 32GB of swap space 
Ubiquibacon
quelle
8

Es hängt ziemlich stark davon ab, was Sie damit machen. Bei entsprechender Auslastung benötigen Sie keinen Auslagerungsspeicher, unabhängig davon, ob Sie über 16 MB oder 16384 MB RAM verfügen. In der Tat laufen die meisten eingebetteten Linux-Geräte ohne (wohin würden sie wechseln?)

In Anbetracht der RAM-Preise werden Sie Swap wahrscheinlich nicht für die aktive Berechnung verwenden. Also, was ist noch übrig?

  1. Auf Desktops wird der Auslagerungsspeicher für Suspend-to-Disk verwendet. Dieser Auslagerungsspeicher muss ungefähr 1 × RAM betragen, abhängig davon, wie gut der Speicherinhalt komprimiert ist.
  2. Zulassen, dass inaktive Aufgaben aus dem RAM entfernt werden, um mehr Platz für den Festplatten-Cache zu schaffen
  3. Dasselbe, aber damit aktive Prozesse es stattdessen für Heap / Stack verwenden können

(2) und (3) hängen stark von der Arbeitsbelastung ab. Auf meinen Desktops kann ich problemlos 4 GB + auf (2) verwenden, da Vims, Xterms usw. auf anderen Desktops ausgeführt werden.

Auf den meisten Servern, die ich verwende, wird kaum etwas ausgelagert, und 1 bis 2 GB Swap (unabhängig von der Größe des Arbeitsspeichers) scheinen in Ordnung zu sein.

derobert
quelle
Swap Space wird auch verwendet, wenn Sie etwas ausführen , das die JVM verwendet: chintzen Sie nicht und vergessen Sie nicht, Swap Space zuzuweisen, wenn Sie Java verwenden!
Warren
@warren: Ich habe Tomcat-Instanzen mit jeweils mehr als 3GiB, die jedoch keinen Swap verwenden (und eine verwendet riesige Seiten und kann daher nicht getauscht werden). Ich bin nicht sicher, wovon du redest.
Derobert
In der JVM gibt es einen halb undurchsichtigen Fehler, der mit den minimalen und maximalen Speichereinstellungen zusammenhängt, auf die ich im vergangenen Sommer gestoßen bin ( antipaucity.com/?p=984 ). TL; DR - jedes Mal , wenn die JVM für mehr Speicher aus dem OS fragt, schreibt er selbst, seine neue Speicher Brocken wird zu tauschen, dann liest sich zurück in den RAM , so dass sein Speicher angrenzt
warren
@warren: OK, ich verwende OpenJDK auf 64-Bit, wobei Xmx und Xms dasselbe sind. Aber ich bin mir nicht sicher, wie Java sich zum Tauschen zwingen würde, der einzige Systemaufruf wäre madvise, aber das wird nicht scheitern ... dieser Fehler spricht von Speichermangel während der Garbage Collection. Das Hinzufügen von Swap verhindert das natürlich, aber das Hinzufügen von RAM würde es auch tun. Vielleicht liegt es an 32-Bit mit PAE?
Derobert
Das passiert auch mit der 64-Bit-JVM: Wenn Sie die gleichen Werte eingestellt haben Xmsund Xmxnicht, kann es Sie beißen: Wir hatten zwei + Wochen lang große Probleme, bis wir es endlich aufgespürt haben
warren
4

Nun, es hängt davon ab, welche Dienste und Anwendungen Sie ausführen möchten. Sie können Ihre Speichernutzung mit free -m beobachten und Ihre Swap-Partition im Laufe der Zeit entsprechend anpassen.

Hier ist eine interessante Diskussion zu diesem Thema. Persönlich (und nachdem ich diese Diskussion gelesen habe) würde ich immer noch ungefähr 1 GB für den Tausch übrig lassen.

Ivan
quelle
2

Ich kann nicht direkt mit Debian sprechen, aber ich weiß, dass wenn Sie über 2 GB RAM aufsteigen, sich die ursprüngliche 2xRAM-Gleichung ändert, normalerweise auf 1xRAM. Ich denke, sobald Sie 16 GB RAM erreicht haben, senkt sich der Vorschlag wieder auf .75xRAM.

Natürlich habe ich dies für Solaris als zutreffend befunden und es ist tatsächlich die Metrik, die für Oracle-Installationen verwendet wird. Daher hängt YMMV von den Apps ab, auf denen Sie dort ausgeführt werden.

Milner
quelle
2

Ich mache immer so viel Swap (zumindest) wie RAM. Nur für den Fall, dass ich die Maschine eines Tages in den Ruhezustand versetzen möchte. Kann mit weniger arbeiten, könnte aber auch nicht.

HDD-Speicherplatz ist heutzutage billig, daher zögere ich nicht, Swap-Speicherplatz freizugeben.

Martin C.
quelle
2

Swap Space kann als "Auffüllung" dienen, wenn Ihnen sonst sofort der Speicher ausgeht.

Wenn ein Prozess den gesamten verfügbaren Arbeitsspeicher und einige davon belegt, läuft der Computer sehr langsam, Sie können sich jedoch in der Regel erholen. Es ist auch einfacher zu erkennen, welcher Prozess das Problem verursacht.

sternenblau
quelle
2
Dies ist ein zweischneidiges Schwert: Auf meinem Heim-PC entfernte ich Swap, als ich Firefox 2.x verwendete, weil es langsam den gesamten Speicher verschlang, und als der Computer den Swap ausführte, wurde es völlig unbrauchbar. Ohne Swap wurde der Firefox-Prozess einfach vom Kernel geschlossen :)
wazoox
1

Im Laufe der Jahre habe ich die Regel befolgt, dass Sie für Windows-Computer so viel Auslagerungsspeicher haben wie Sie RAM ... Bei Novell würden wir den Auslagerungsspeicher höher einstellen, wenn wir mehr Drucker hätten ... Für Linux betrug die Regel und Praxis für mich 1 GB Tauschen Sie für jeden 2 GB RAM, den Sie haben. Und Sie platzieren es vorne auf der Festplatte, damit Sie schneller darauf zugreifen können.

  • Wenn es sich um ein Mail / Spam-Gateway handelt, verwende ich die doppelte Auslagerung in den Arbeitsspeicher
  • Wenn es sich um einen * Server handelt, verwende ich überhaupt keinen Swap
  • Wenn es sich um einen LAMP-Server handelt, gilt die Regel 1/2.

  • Die Laufleistung variiert je nach Anwendung und GUI-Nutzung.

Thomas Denton
quelle
Eigentlich würde ich denken, dass auf Swap in der Mitte der Festplatte am schnellsten zugegriffen werden kann.
Eddie
0

Ich erstelle 1 GB Swap und kaufe mehr RAM, sobald es benutzt wird. Auf modernen Computern muss man nicht wirklich tauschen, RAM ist so billig.

Adam Gibbins
quelle
0

Wofür setzen Sie das System ein? Persönlich benutze ich keinen Swap. Wenn irgendetwas ein Token mit 512 MB oder so benutzt, können die Dinge auf die Festplatte gestellt werden, wenn sie residieren, aber für längere Zeit inaktiv sind.

Mike McQuaid
quelle
0

Ich verwende nur einen kleinen Token-Swap (normalerweise 256 MB, aber ich habe sogar 64 MB getan), weil die Konfiguration eines Systems mit Null-Swap eine spezielle Konfiguration erfordert.

Speicherplatz ist billig, aber slooooooooow. Sobald das System zu tauschen beginnt, ist die Leistung gleich Null. Und RAM ist nicht mehr so ​​teuer.

Vertrauen Sie mir, kaufen Sie einen etwas langsameren Prozessor und kaufen Sie mehr RAM. 2,8 GHz statt 3,0 GHz sparen Sie genug Geld, um mindestens 2 GB RAM zu kaufen.


quelle