Swap-Partitionsgröße auf einem 64 GB RAM-Computer für speicherintensive Arbeiten

Swap-Partitionsgröße auf einem 64 GB RAM-Computer für speicherintensive Arbeiten

Ich habe 64 GB RAM und 240 GBSSDauf meinem Computer, den ich für speicherintensive Berechnungen (Maschinelles Lernen, Data Mining usw.) verwenden werde. Die meisten Ratschläge, die ich im Internet gefunden habe, beziehen sich auf Computer mit 2-4-8 GB RAM und empfehlen die doppelte Größe der RAM-Swap-Partition (also 128 GB).

Ist es sinnvoll, eine Swap-Partition mit 128 GB zu erstellen? Welche Vorteile bietet mir die Erstellung einer riesigen Swap-Partition?

Habe ich das richtig verstanden, falls mir der physische RAM ausgeht:

  1. Wenn ich keinen Swap habe, erhalte ich die Fehlermeldung „Nicht genügend Arbeitsspeicher“
  2. Wenn ich Swap habe, werden einige RAM-Seiten in die Swap-Partition kopiert und das Programm läuft weiter (wenn auch langsamer).

Manche Leute sagen, dass es keine gute Idee ist, Swap auf SSD zu erstellen, da diese nur eine begrenzte Anzahl an Lese-/Schreibzyklen hat. Wie schnell werden die Lese-/Schreibzyklen der SSD durch Swap erschöpft (soweit ich weiß, sind es etwa 50.000 Schreib-IOPS)?

Ich verwende Linux (Ubuntu 14.04(Treue Tahr)).

Ich werde vorerst einen Swap von 16 GB einrichten, da dies sicherlich ausreichen sollte (RedHat schlägt beispielsweise 4 GB vor) und 16 GB Festplattenspeicher eigentlich keine große Sache sind.

Antwort1

Sie benötigen wahrscheinlich nur eine kleine Menge an Swap. Wenn Sie über genügend RAM für den typischen Arbeitsspeicher Ihres Computers verfügen (und ich bin ziemlich sicher, dass das der Fall ist), benötigen Sie Swap nur für zwei Dinge:

  1. Sie benötigen Swap, um Informationen aus dem RAM zu holen, auf die wahrscheinlich nie zugegriffen wird, um mehr Platz für den Festplattencache freizugeben. Viele Anwendungen werden beim Systemstart ausgeführt und werden nie wieder aufgerufen. Sie möchten nicht, dass Seiten, die sie verschmutzt haben, für immer im RAM stecken bleiben. Sie benötigen also Swap, um sie zu speichern.

  2. Sie benötigen Swap, um Zuordnungen abzudecken, die nie gefüllt werden. Dieser Speicherplatz muss einfach verfügbar sein, auch wenn er nicht verwendet wird. Ohne ihn muss das System die Speicherzuweisung verweigern, selbst wenn es über ausreichend freien physischen RAM verfügt, da nicht genügend Backup-Speicher vorhanden ist, um alle Zuordnungen gleichzeitig verwenden zu können.

Für keines davon ist eine große Menge an Swap erforderlich. 16 GB sollten beispielsweise mehr als ausreichend sein. Der Zweck besteht nicht darin, dass Sie größere Arbeitssätze auf Kosten der Geschwindigkeit ausführen können. Der Zweck besteht darin, dass Sie Ihre 64 GB effektiv nutzen können und sie nicht mit Datenmüll verstopfen oder für Randfälle reservieren müssen, die nie eintreten werden.

(Ich stimme mit Bert überein, dass 4 GB wahrscheinlich ausreichen werden.)

Antwort2

Roter Hutempfiehlt 4 GB auf einer Maschine mit 64 GB.

Die Dimensionierung des Swap-Speichers ist jedoch eher eine Kunst als eine Wissenschaft. Sie hängt davon ab, wofür die Maschine verwendet wird, wie viel Speicherplatz und Speicher Sie haben und von anderen Faktoren. Denken Sie daran:Sie können später immer noch mehr Swap hinzufügen.

Die Verwendung der 2X-Regel für physischen Speicher ist angesichts der Speichermenge, die Systeme heutzutage haben, veraltet. Es wird jedoch nicht empfohlen, mit Zero-Swap zu arbeiten, es sei denn, Sie wissen, was Sie tun. Die Empfehlung von 4 GB ist ein guter Ausgangspunkt.

Antwort3

Unter Linux benötigen Sie genügend Swap, sodass der gesamte verfügbare virtuelle Speicher (RAM + SWAP) für alle Prozesse, die Sie gleichzeitig ausführen möchten, und deren maximalen virtuellen Platzbedarf ausreicht.

Wenn Sie weniger Swap haben oder überhaupt keinen, tritt die folgende Situation ein: Dem System geht beim Versuch, eine Seite zuzuweisen, der Speicher aus. Dies ist jedoch immer noch ein Soft-Fehler, auch wenn kein Swap vorhanden ist, da das System über genügend „Opfer“-Seiten verfügt, die entfernt werden können, um Platz zu schaffen: nämlich die Seiten aller dateibasierten Speicherzuordnungen, wie ausführbare Dateien und gemeinsam genutzte Bibliotheken!

Da Ihr System immer mehr Speicherplatz für Daten benötigt (die nicht ausgelagert werden können), wird der ausführbare Code (gemeinsam genutzte Bibliotheken und ausführbare Dateien) zunehmend evakuiert. Dies führt zu einer schrecklichen Systembeschädigung, da der Arbeitssatz auf einen immer kleineren Seitensatz reduziert wird.

Der Swap-Speicher mildert dieses Problem, indem er einen Ort zum Auslagern anonymer (nicht per Datei zugeordneter) Seiten bereitstellt: die Seiten, die für die Speicherzuweisung verwendet werden, sodass ausführbarer Code im Speicher verbleiben kann.

Wenn Sie jedoch nicht häufig speicherintensive Aufgaben ausführen, können Sie die meiste Zeit mit Swapless auskommen und bei Bedarf manuell eine Swap-Datei (anstelle einer dedizierten Partition) konfigurieren. Um eine Swap-Datei im laufenden Betrieb zu erstellen, melden Sie sich als Root an und:

dd if=/dev/zero of=/path/to/swapfile size=$((1024 * 1024)) count=32768  # 32 Gb.
mkswap /path/to/swapfile
swapon /path/to/swapfile

Wenn Sie es nicht mehr benötigen:

swapoff /path/to/swapfile
rm /path/to/swapfile

Anmerkungen:

  1. Sie müssen definitiv nicht mindestens so viel Swap konfigurieren, wie Sie RAM haben. Diese Faustregel stammt aus Betriebssystemen, bei denen dies aufgrund der Art und Weise, wie Swapping konzipiert wurde, eine zwingende Anforderung war.

  2. Es gibt Möglichkeiten, Linux zu einem schwerwiegenden Absturz zu bringen, wenn kein Speicher verfügbar ist. Dazu können Sie die Werte der folgenden Sysctl-Einträge manipulieren:

    vm.overcommit_memory
    vm.overcommit_ratio
    

Antwort4

Die Arbeitslast, die Sie auf die Maschine anwenden möchten, erfordert zur Ausführung eine bestimmte Speichermenge (denken Sie daran, der Gleichung genügend Speicher hinzuzufügen, um Spitzenlasten bewältigen zu können) und Sie müssen Ihren Computer so konfigurieren, dass er mindestens über diese Menge verfügt.

Moderne Betriebssysteme bieten virtuellen Speicher als Kombination aus physischem Speicher und Swap-Speicher. Wenn Sie also mehr Speicher benötigen, als der Rechner zur Verfügung hat,mussFügen Sie genügend Swap-Speicher hinzu, um die Lücke zu füllen. Wenn Sie beispielsweise maximal 80 GB benötigen und die Maschine über 64 GB verfügt, brauchen Sie 16 GB Swap.

Normalerweise werden Sie bei der Installation von Betriebssystemen aufgefordert, einen anfänglichen Swap-Bereich zu erstellen (da dies am einfachsten ist und die Installation auch auf kleinen Computern ermöglicht). Als Faustregel für typische Unix-Vorgänge gilt, dass der virtuelle Speicher dreimal so groß sein sollte wie der physische Speicher. Dies wird daher normalerweise empfohlen. Sie wissen jedoch mehr über das Nutzungsmuster, sodass Sie dies entsprechend ändern können.

Es spricht nichts dagegen, ohne Swapspace zu arbeiten, wenn der Speicherbedarf immer geringer ist. Linux verwendet den ungenutzten Speicher transparent als Festplattencache.

verwandte Informationen