it-swarm.com.de

Tauschen Sie die Partitionsgröße auf einem Computer mit 64 GB RAM für speicherintensives Arbeiten aus

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

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

Verstehe ich das richtig, falls mir der physische Arbeitsspeicher ausgeht:

  1. Wenn ich keinen Swap habe, wird der Fehler "Nicht genügend Speicher" angezeigt
  2. Wenn ich Swap habe, werden einige Seiten von RAM in die Swap-Partition kopiert und das Programm läuft weiter (wenn auch langsamer).

Einige Leute sagen, es ist eine schlechte Idee, SSD zu tauschen, da es nur eine begrenzte Anzahl von Lese-/Schreibzyklen gibt. Wie schnell bei der Verwendung von Swap werden die Lese-/Schreibzyklen der SSD erschöpft (meines Wissens sind es etwa 50000 Schreib-IOPS)?

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

Vorerst sollte ein Swap mit 16 GB eingerichtet werden (RedHat schlägt beispielsweise 4 GB vor), und 16 GB Festplattenspeicher sind eigentlich keine große Sache.

35
wrwt

Sie brauchen wahrscheinlich nur eine kleine Menge Swap. Wenn Sie über genügend RAM für das typische Funktionsspektrum Ihres Computers verfügen, und ich bin mir ziemlich sicher, dass dies der Fall ist, müssen Sie nur zwei Dinge austauschen:

  1. Sie benötigen Swap, um Informationen abzurufen, auf die wahrscheinlich nie über RAM zugegriffen werden kann, um mehr Speicherplatz für den Festplatten-Cache freizugeben. Viele Anwendungen werden beim Systemstart ausgeführt und es wird nie wieder auf sie zugegriffen. Sie möchten nicht, dass Seiten, die sie verschmutzt haben, für immer in RAM stecken. Sie müssen also tauschen, um sie zu halten.

  2. Sie müssen tauschen, um Zuweisungen abzudecken, die niemals ausgefüllt werden. Dieser Platz muss einfach verfügbar sein, auch wenn er nicht genutzt wird. Andernfalls muss sich das System weigern, Speicher zuzuweisen, auch wenn es über ausreichend freien physischenRAMverfügt, da der Sicherungsspeicher nicht ausreicht, um alle Zuweisungen gleichzeitig verwenden zu können.

Beides erfordert keine große Menge an Swap. 16 GB sollten zum Beispiel mehr als genug sein. Der Zweck ist nicht, dass Sie größere Arbeitssets auf Kosten der Geschwindigkeit ausführen. Der Zweck ist, dass Sie Ihre 64 GB effektiv nutzen und sie nicht mit Müll verstopfen oder für Edge-Fälle reservieren müssen, die niemals passieren werden.

(Ich stimme Bert zu, dass 4 GB wahrscheinlich ausreichen werden.)

35
David Schwartz

RedHat empfiehlt 4 GB auf einem Computer mit 64 GB .

Größentausch ist jedoch eher eine Kunst als eine Wissenschaft. Dies hängt davon ab, wofür der Computer verwendet wird, wie viel Speicherplatz und Speicher Sie haben und von anderen Faktoren. Denken Sie daran, dass Sie später immer noch einen Swap hinzufügen können.

Die Verwendung der 2X-Regel für physischen Speicher ist veraltet, da die Anzahl der Speichersysteme heutzutage nicht mehr aktuell ist. Es wird jedoch nicht empfohlen, mit einem Swap von Null zu arbeiten, es sei denn, Sie wissen, was Sie tun. Die Empfehlung von 4 GB ist ein guter Ausgangspunkt.

29
Bert

Unter Linux benötigen Sie genügend Swap, damit der insgesamt verfügbare virtuelle Speicher (RAM + SWAP) für alle Prozesse, die Sie gleichzeitig ausführen möchten, und deren maximale virtuelle Stellfläche ausreicht.

Wenn Sie weniger Auslagerungen oder überhaupt keine Auslagerungen haben, tritt die folgende Situation auf: Dem System geht der Speicherplatz für die Zuweisung einer Seite aus. Dies ist jedoch immer noch ein schwacher Fehler, auch wenn es keinen Auslagerungsvorgang gibt, da das System viele "Opferseiten" enthält, die entfernt werden können, um Platz zu schaffen: nämlich die Seiten aller dateigesicherten Speicherzuordnungen, wie z. B. ausführbare Dateien und gemeinsam genutzte Bibliotheken!

Da Ihr System immer mehr Speicherplatz für Daten benötigt (die nicht ausgetauscht werden können), wird der ausführbare Code (gemeinsam genutzte Bibliotheken und ausführbare Dateien) zunehmend evakuiert, was zu einer schrecklichen Überlastung führt, da der Arbeitssatz immer enger wird Seiten.

Swap Space behebt dieses Problem, indem es einen Platz für das Auslagern anonymer (nicht dateizugeordneter) Seiten bietet: 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 möglicherweise die meiste Zeit ohne Swap arbeiten und eine Swap-Datei (anstelle einer dedizierten Partition) manuell konfigurieren, wenn Sie sie benötigen. Um eine Auslagerungsdatei im laufenden Betrieb zu erstellen, müssen Sie root werden 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 brauchen:

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

Anmerkungen:

  1. Sie müssen auf keinen Fall mindestens so viel Swap konfigurieren, wie Sie über RAM verfügen. Diese Faustregel stammt aus Betriebssystemen, in denen es aufgrund der Art und Weise, wie das Austauschen entworfen wurde, eine harte Anforderung war.

  2. Es gibt Möglichkeiten, Linux zum Scheitern zu bringen, wenn kein Speicher verfügbar ist, und zwar durch Ändern der Werte dieser sysctl-Einträge:

    vm.overcommit_memory
    vm.overcommit_ratio
    
12
Kaz

Es gibt weitere Überlegungen. Wenn Sie suspend für die Arbeit benötigen/möchten, benötigen Sie mindestens die Größe Ihres RAM und einige mehr. Es klingt jedoch unwahrscheinlich, dass Sie es benötigen, da Sie anscheinend hauptsächlich ein Computer-Arbeitspferd bauen.

In diesem Fall sollten Sie eine Auslagerungsdatei anstelle einer Partition verwenden. Sie brauchen sich keine Gedanken über die Größe zu machen, sie zu entfernen oder sie später hinzuzufügen, es ist keine Neupartitionierung erforderlich. Es gibt keine (spürbaren) Leistungseinbußen bei der Verwendung einer Datei über eine Partition. Wenn Sie es jemals brauchen, schauen Sie sich die Größe an und das wird Ihnen auch gute Tipps geben.

3
kaste

Die Workload, die Sie auf den Computer anwenden möchten, benötigt eine bestimmte Menge an Arbeitsspeicher (denken Sie daran, der Gleichung genügend Speicher hinzuzufügen, um Spitzenlasten zu verarbeiten), und Sie müssen Ihren Computer so konfigurieren, dass mindestens dieser Speicher verfügbar ist.

Moderne Betriebssysteme bieten virtuellen Speicher als Kombination aus physischem Speicher und Auslagerungsspeicher. Wenn Sie also mehr Speicher benötigen, als der Computer zur Verfügung hat, müssen Sie genügend Auslagerungsspeicher hinzufügen Raum, um die Lücke zu füllen. Das heißt Wenn Sie maximal 80 GB benötigen und der Computer über 64 GB verfügt, benötigen Sie einen 16-GB-Swap.

In der Regel werden Sie von Betriebssysteminstallateuren aufgefordert, einen ersten Auslagerungsbereich einzurichten (da dies der einfachste Bereich ist und selbst kleine Computer installieren können). Es hat sich herausgestellt, dass die Größe des virtuellen Speichers für typische Unix-Vorgänge eine gute Faustregel ist Das Dreifache des physischen Speichers. Dies wird normalerweise empfohlen. Sie wissen jedoch mehr über das Verwendungsmuster, sodass Sie dies gegebenenfalls ändern können.

Es ist nichts falsch daran, ohne Swapspace zu arbeiten, wenn der Speicherdruck immer geringer ist. Linux verwendet transparent nicht verwendeten Speicher als Festplatten-Cache.

Eine viel bessere Idee als "viel Tausch" besteht darin, Ihre Arbeit (neu) zu organisieren, damit die Arbeitssätze in den Speicher passen, und dann das Dateisystem zu verwenden, um die von Ihnen geleistete Arbeit zu speichern und abzurufen. Das heißt, anstatt das Betriebssystem zu zwingen, zu erraten, wie Ihre Speicherverwendungsmuster aussehen werden, verwenden Sie das, was Sie über Ihre Probleme wissen, um Ihre Speicherverwendungsmuster zu steuern.

Als zufälliges Beispiel, das für mich in diesem Sommer unmittelbar relevant ist ... Um das quadratische Sieb zu implementieren, muss ein großes (scheinbar) zusammenhängendes Array zum Markieren vorhanden sein (mit einem komplizierten Algorithmus, dessen Details für dieses Beispiel eigentlich keine Rolle spielen). Das Array muss ~ 100 Giga-Einträge haben, also leicht im Bereich 1 TB. Ich könnte so tun, als würde ich das zuweisen, und das Betriebssystem eine erstaunliche Menge ineffizienten Austauschs durchführen lassen, um Seiten in und aus RAM zu bekommen, um alle sequentiellen Schreibvorgänge durch das Array zu unterstützen. Anstatt etwas zu tun, das nur auf den Kopf gestellt ist, habe ich mir vorgenommen, ein viel kleineres Array zuzuweisen, das genau in den Speicher passt, und dieses kleine Array dann wiederzuverwenden, um den Rest des großen Arrays iterativ in Slices abzudecken. Ich habe auch das Betriebssystem entfernt, die ausgeführten Dienste entfernt, die Shell ersetzt und zwei Schichten von Speicherzuordnern angepasst, um so gut wie möglich den für meinen Prozess verfügbaren Adressraum zusammenhängend zu halten.

Die SSD ist zwar schnell, aber bei weitem nicht so schnell wie die Organisation Ihrer Berechnung, um dieselben Vorgänge auszuführen, ohne jemals zum Tauschen anzuhalten.

2
Eric Towers

Sie werden auch mit 1GiB (und wahrscheinlich weniger) Swap in Ordnung sein. Mein Arbeitscomputer verbraucht normalerweise nicht mehr als 140-150 MiB. Ein Gigabyte ist ausreichend für die Überversorgung.
Sofern Sie keine Rechenaufgaben ausführen, für die Datasets mit einer Größe von Hunderten von Gigabyte und (dies ist wichtig!) Erforderlich sind, wird in a more auf Daten zugegriffen oder weniger Access-Once-Mode, werden Sie nie einen Swap haben wollen, der viel größer ist. Andererseits funktioniert die einfache Speicherzuordnung einer Datendatei für diese Anwendung genauso gut.

Aber mehr Tausch hilft mehr, oder? Mehr von allem ist immer besser!

Überlegen Sie, welchen Unterschied ein Swap von beispielsweise 16GiB macht (oder denken Sie an 64GiB). Wenn Sie diese 16GiB niemals verwenden, können Sie sie auch nicht als erstes beiseite legen. Aber wenn du sie benutzt , was passiert dann? Die Festplatte ist im Vergleich zum Hauptspeicher extrem langsam. Selbst mit einer SATA-600-SSD dauert die Übertragung von 16GiB zwischen 30 und 40 Sekunden und bei einigen anderen Konfigurationen das 2-4-fache.
Jetzt wird jemand unweigerlich einwenden, dass Sie eher ein Dutzend oder so 4-kB-Seiten durchblättern, nicht 16-GB-Seiten auf einmal. Das ist zwar wahr, aber der Punkt steht dennoch. Wenn Sie nur ein paar Seiten ein- und auslagern müssen, benötigen Sie keine 16 GB Swap, aber wenn Sie 16 GB Swap benötigen, werden Sie diese auch übertragen (auf die eine oder andere Weise).

Theoretisch könnten 99,9% aller Benutzer sogar einen 64GiB-Rechner (oder einen 8 + GiB-Rechner) ohne Tausch verwenden und bemerken höchstwahrscheinlich nie, dass etwas fehlt. Dies ist jedoch nicht ratsam.
Erstens ist es nicht optimal, weil das Betriebssystem weniger Möglichkeiten hat, zu verwerfen, wenn der physische Speicher knapp wird. Es gibt zwei Möglichkeiten: Tauschen Sie etwas aus, das nicht verwendet wird, oder werfen Sie Seiten aus dem Puffercache. Wenn Sie keinen Swap haben, gibt es nur eine Möglichkeit. Das Wegwerfen von Seiten aus dem Puffercache ist harmlos, kann jedoch die Leistung merklich beeinträchtigen.
Zweitens können private anonyme Zuordnungen einfach fehlschlagen, wenn es keinen Swap gibt. Das wird normalerweise nicht passieren, aber irgendwann, wenn nicht genügend physischer Speicher zur Verfügung steht, um alle zu befriedigen, und es keinen Swap gibt, hat das Betriebssystem nur diese eine Wahl, außer ...
Drittens kann der gefürchtete OOM-Killer einspringen. Das bedeutet, dass ein mehr oder weniger zufälliger Prozess getötet wird. Nein danke. Dies ist nicht etwas, was Sie wollen.

Tipps wie das X-fache der Menge an installiertem RAM stammen von Personen, die etwas wiederholen, was sie gehört haben (und nicht verstanden haben!), Von Personen, die etwas wiederholt haben, was sie gehört haben (und nicht) verstehe nicht!) vor Jahrzehnten.
Die "Use 2X your RAM" -Regel war in den 1980er und 1990er Jahren eine leicht zu merkende Faustregel, es war nie die "goldene Wahrheit" (nur etwas, das für die meisten Benutzer in Ordnung war), und das tut es nicht. trifft heutzutage überhaupt nicht zu.

Sie sollten eine angemessene Menge an Swap haben, die Sie sich leicht leisten können (sagen wir ein Gigabyte), damit das Betriebssystem einige veraltete Dinge auslagern kann und die Welt dies nicht sofort tut ende wenn du mal nach etwas mehr gedächtnis fragst. Aber das ist es.

1
Damon

Wie die anderen erwähnten, ist eine Swap-Partition eine gute Idee, auch wenn Sie über genügend RAM verfügen. Es ist keine gute Idee, es auf eine SSD zu legen. Die häufigen Schreibvorgänge auf einer Swap-Partition werden Ihr Laufwerk möglicherweise strapazieren.

Wenn Sie einen freien USB 3.0-Anschluss haben, würde ich die Verwendung eines Flash-Laufwerks als Swap-Speicher empfehlen. Es gibt viele Hochgeschwindigkeits-Flash-Laufwerke, die so schnell sind wie Ihre SSD, aber viel billiger - billig genug, um sie zu ersetzen, wenn sie zu versagen begann. Eine schnelle Suche bei Amazon zeigt, dass es viele anständige 16-GB-USB-3.0-Flash-Laufwerke für unter 20 US-Dollar und sogar einige 64-GB-Laufwerke für unter 60 US-Dollar gibt.

Partitionieren Sie das gesamte Flash-Laufwerk als Auslagerungsspeicher, und Sie haben Auslagerungsspeicher, wenn Sie ihn benötigen, und Sie können beruhigt davon ausgehen, dass der wiederholt geschriebene Speicher leicht (und kostengünstig) austauschbar ist.

1
ArmanX