GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Brauche ich Swap Space, wenn ich mehr als genug RAM habe?

Soweit ich weiß, ist der Zweck eines Swaps Partition in Linux besteht darin, einige „nicht so häufig aufgerufene“ Informationen aus dem RAM freizugeben und sie auf eine bestimmte Partition auf Ihrer Festplatte zu verschieben (auf Kosten des langsameren Lesens oder Schreibens), wodurch aktiven Anwendungen im Wesentlichen mehr davon ermöglicht wird „Hochgeschwindigkeitsspeicher“.

Dies ist großartig, wenn Sie sich auf einem Computer mit wenig RAM befinden und keine Probleme haben möchten, wenn Ihnen der Arbeitsspeicher ausgeht. Wenn Ihr System jedoch über 16 GB verfügt oder 32 GB RAM und vorausgesetzt, Sie betreiben keine MySQL-Datenbank für StackExchange oder bearbeiten einen 1080p-Film in voller Länge unter Linux, sollte eine Swap-Partition verwendet werden?

Akzeptierte Antwort:

Ja.

Das sollten Sie auf jeden Fall immer Swap aktiviert haben, es sei denn, es gibt einen sehr zwingenden, verbietenden Grund (z. B. überhaupt keine Festplatte oder nur Netzwerkfestplatte vorhanden). Sollten Sie einen Swap in der Reihenfolge der oft empfohlenen lächerlichen Größen haben (z. B. die doppelte Menge an RAM)? Nun, nein .

Der Grund dafür ist, dass Swap nicht nur nützlich ist, wenn Ihre Anwendungen mehr Arbeitsspeicher verbrauchen, als physischer RAM vorhanden ist (tatsächlich ist Swap in diesem Fall nicht sehr nützlich überhaupt nicht, weil es die Leistung ernsthaft beeinträchtigt). Der Hauptanreiz für Tausch ist heutzutage nicht um 16 GiB RAM auf magische Weise in 32 GiB umzuwandeln, aber den installierten, verfügbaren RAM effizienter zu nutzen.

Auf einem modernen Computer bleibt RAM nicht ungenutzt. Ungenutzter RAM ist etwas, das Sie genauso gut nicht kaufen und stattdessen das Geld sparen könnten. Daher alles, was Sie laden oder alles, was anderweitig speicherabgebildet ist, alles, was möglicherweise könnte später von jedem wiederverwendet werden kann (begrenzt durch Sicherheitsbeschränkungen) zwischengespeichert wird. Sehr bald nachdem die Maschine hochgefahren ist, wird der gesamte physische Arbeitsspeicher für etwas verwendet worden sein .

Immer wenn Sie vom Betriebssystem nach einer neuen Speicherseite fragen, muss der Speichermanager eine fundierte Entscheidung treffen:

  1. Eine Seite aus dem Puffer-Cache löschen
  2. Entfernen Sie eine Seite aus einer Zuordnung (effektiv dasselbe wie #1, auf den meisten Systemen)
  3. Verschieben Sie eine Seite, die längere Zeit – am besten noch nie – nicht aufgerufen wurde, in den Tausch (das könnte sogar proaktiv passieren, nicht unbedingt im allerletzten Moment)
  4. Beenden Sie Ihren Prozess oder beenden Sie einen zufälligen Prozess (OOM)
  5. Kernelpanik

Optionen Nr. 4 und Nr. 5 sind sehr unerwünscht und wird nur passieren, wenn das Betriebssystem absolut keine andere Wahl hat. Die Optionen #1 und #2 bedeuten, dass Sie etwas wegwerfen, das Sie möglicherweise bald wieder brauchen werden. Dies wirkt sich negativ auf die Leistung aus.

Option Nr. 3 bedeutet, dass Sie etwas, das Sie (wahrscheinlich) in absehbarer Zeit nicht benötigen, in einen langsamen Speicher verschieben. Das ist in Ordnung, denn jetzt etwas, das Sie brauchen kann den schnellen Arbeitsspeicher nutzen.

Indem Sie Option Nr. 3 entfernen, haben Sie das Betriebssystem effektiv darauf beschränkt, entweder Nr. 1 oder Nr. 2 auszuführen. Das erneute Laden einer Seite von der Festplatte ist dasselbe wie das erneute Laden von einer Auslagerung, außer dass es normalerweise weniger wahrscheinlich ist, dass eine Seite von der Auslagerung neu geladen werden muss (aufgrund der richtigen Paging-Entscheidungen).

Mit anderen Worten, durch das Deaktivieren von Swap gewinnen Sie nichts, aber Sie schränken die Anzahl der nützlichen Optionen des Betriebssystems beim Umgang mit einer Speicheranforderung ein. Was möglicherweise nicht ist , aber sehr wahrscheinlich kann sein ein Nachteil (und wird niemals ein Vorteil sein).

Verwandt:Elektrik – Ich habe eine Raumheizung an die Steckdose angeschlossen, jetzt funktioniert die Steckdose nicht. Strom noch an?

[BEARBEITEN]

Der aufmerksame Leser der mmap Manpage, insbesondere die Beschreibung von MAP_NORESERVE , wird ein weiterer guter Grund auffallen, warum Swap selbst auf einem System mit „genügend“ physischem Speicher so etwas wie eine Notwendigkeit ist:

„Wenn der Auslagerungsspeicher nicht reserviert ist, kann es beim Schreiben zu SIGSEGV kommen, wenn kein physischer Speicher verfügbar ist.“

— Moment mal, was bedeutet das?

Wenn Sie eine Datei zuordnen, können Sie direkt auf den Inhalt der Datei zugreifen, als wäre die Datei auf magische Weise im Adressraum Ihres Programms. Für den Nur-Lese-Zugriff benötigt das Betriebssystem grundsätzlich nicht mehr als eine einzelne Seite des physischen Speichers, die jedes Mal, wenn Sie auf eine andere virtuelle Seite zugreifen, mit anderen Daten neu gefüllt werden kann (aus Effizienzgründen wird dies natürlich nicht getan, aber im Prinzip könnten Sie mit einer einzigen auf Daten im Wert von Terabytes zugreifen Seite des physischen Speichers). Nun, was ist, wenn Sie auch in eine Dateizuordnung schreiben? In diesem Fall muss das Betriebssystem für jede beschriebene Seite eine physische Seite – oder Auslagerungsbereich – bereithalten. Es gibt keine andere Möglichkeit, die Daten aufzubewahren, bis der Writeback-Prozess der schmutzigen Seiten seine Arbeit erledigt hat (was mehrere Sekunden dauern kann). Aus diesem Grund reserviert das Betriebssystem Auslagerungsspeicher (aber verpflichtet sich nicht unbedingt immer dazu). Falls Sie also in ein Mapping schreiben, während zufällig keine physische Seite unbenutzt ist (das ist durchaus möglich und ein normaler Zustand), wieder garantiert dass es trotzdem funktioniert.

Was ist nun, wenn es keinen Tausch gibt? Das bedeutet, dass kein Swap reserviert werden kann (duh!), und das bedeutet, sobald keine freien physischen Seiten mehr übrig sind und Sie auf eine Seite schreiben, erhalten Sie eine angenehme Überraschung in Form des Eingangs Ihres Prozesses ein Segmentierungsfehler und wird wahrscheinlich getötet.

[/BEARBEITEN]

Die traditionelle Empfehlung, Swaps doppelt so groß wie der Arbeitsspeicher zu machen, ist jedoch unsinnig. Obwohl Speicherplatz billig ist, macht es keinen Sinn, so viel Swap zuzuweisen. Etwas zu verschwenden, das billig ist, ist immer noch Verschwendung, und Sie absolut nicht wollen ständig mehrere Hundert Megabyte (oder größer) große Arbeitssätze ein- und auslagern.

Es gibt kein einzelnes „richtig“ Größe tauschen (es gibt so viele „richtige“ Größen, wie es Benutzer und Meinungen gibt). Normalerweise weise ich unabhängig von der RAM-Größe feste 512 MiB zu, was für mich sehr gut funktioniert. Der Grund dafür ist, dass 512 MiB etwas sind, das Sie immer verwenden können leisten sich heutzutage sogar auf einer kleinen Platte. Andererseits ist es nicht besser, mehrere Gigabyte Swap hinzuzufügen. Sie werden sie nicht verwenden, außer wenn etwas ernsthaft schief läuft.

Selbst auf einer SSD ist Swap um Größenordnungen langsamer als RAM (aufgrund von Busbandbreite und Latenz), und obwohl es sehr akzeptabel ist um etwas zum Austauschen zu verschieben, das wahrscheinlich nicht mehr benötigt wird (d.h. Sie werden es höchstwahrscheinlich nicht wieder einlagern, sodass Ihr Pool an verfügbaren Seiten effektiv kostenlos erweitert wird), wenn Sie es wirklich brauchen beträchtliche Swap-Mengen (das heißt, Sie haben eine Anwendung, die z. B. einen 50-GiB-Datensatz verwendet), sind Sie ziemlich verloren.

Verwandte:Muss der Kriechkeller entlüftet werden?

Sobald Ihr Computer anfängt, Seiten im Gigabyte-Bereich ein- und auszulagern, geht alles wie im Flug. Für die meisten Leute (einschließlich mir) ist dies also keine Option, und so viel Swap zu haben, macht daher keinen Sinn.


Linux
  1. Eine Einführung in den Auslagerungsbereich auf Linux-Systemen

  2. Df sagt, ich habe 20 g mehr Speicherplatz belegt als Du. Wieso den??

  3. Tauschen Sie Speicherplatz auf Cloud-Servern aus

  4. So fügen Sie Swap Space unter Debian 11 hinzu

  5. So fügen Sie Swap Space unter Ubuntu 22.04 hinzu

So löschen Sie den RAM-Speicher-Cache, den Puffer und den Swap-Speicher unter Linux

Warum Swap verwenden, wenn im RAM mehr als genug freier Speicherplatz vorhanden ist?

Ist Xubuntu ressourcenhungriger als Windows Xp?

So überprüfen Sie den Auslagerungsbereich unter Linux

Zorin OS 15 schöner und nützlicher denn je

Wie entferne ich Swap Space von Centos 7.x?