Ich habe 64 GB RAM und 240 GB SSD auf meinem Computer, die 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 bis 8 GB RAM und sie empfehlen die doppelte Größe der RAM-Swap-Partition (also 128 GB).
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:
- Wenn ich keinen Swap habe, wird der Fehler "Nicht genügend Speicher" angezeigt
- Wenn ich Swap habe, werden einige RAM-Seiten 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 benutze 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.
quelle
mmap
, Ihre Arbeitsseiten zuzuweisen , wenn Sie die Größe Ihrer Arbeitsumgebung im Voraus kennen oder bereit sind, eine etwas einfachere Speicherverwaltung durchzuführen. Dann entspricht Ihr Swap-Betrag genau dem Betrag, den Sie für Ihren Prozess benötigen.discard
auf einer SSD mounten möchten . Vergessen Sie auch nicht (und dies wurde in einer Antwort weiter unten erwähnt), dass Sie anstelle einer Partition eine Datei verwenden können, um die Verwaltung zu vereinfachen (und keine Leistungseinbußen auf einer SSD aufgrund von z. B. Fragmentierung).Antworten:
Sie brauchen wahrscheinlich nur eine kleine Menge Swap. Wenn Sie über ausreichend 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:
Sie benötigen Swap, um Informationen abzurufen, auf die wahrscheinlich nie über den Arbeitsspeicher 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 wollen nicht, dass Seiten, die sie verschmutzt haben, für immer im RAM stecken. Sie müssen also tauschen, um sie zu halten.
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 physischen RAM verfügt, da der Sicherungsspeicher nicht ausreicht, um alle Zuweisungen gleichzeitig verwenden zu können.
Keines von diesen erfordert eine 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 Cases reservieren müssen, die niemals passieren werden.
(Ich stimme Bert zu, dass 4 GB wahrscheinlich ausreichen werden.)
quelle
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.
quelle
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:
Wenn Sie es nicht mehr brauchen:
Anmerkungen:
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.
Es gibt Möglichkeiten, Linux zum Scheitern zu bringen, wenn kein Speicher verfügbar ist, und zwar durch Manipulieren der Werte dieser sysctl-Einträge:
quelle
If I have no swap, I get an 'out of memory' error
- das heißtfalse
- die Wahrheit ist, dass, wenn der Swap-Bereich ausgeht, der Killer für nicht genügend Arbeitsspeicher aktiv wird und tötet Ein zufälliger Prozess, um Speicherplatz freizugeben. Die Menge des erforderlichen Swap-Speicherplatzes hängt also davon ab, wie Ihre Anwendung geschrieben wurde.Es gibt weitere Überlegungen. Wenn Sie Suspend benötigen / möchten, benötigen Sie mindestens die Größe Ihres Arbeitsspeichers 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 müssen sich keine Gedanken über die Größenänderung machen, müssen diese nicht entfernen oder später hinzufügen und müssen nicht neu partitionieren. 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.
quelle
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, um die Lücke zu füllen. Das heißt, wenn Sie maximal 80 GB benötigen und der Computer 64 GB hat, 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.
quelle
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 problemlos im 1 TB-Bereich. Ich könnte so tun, als würde ich das zuweisen und das Betriebssystem eine erstaunliche Menge ineffizienter Auslagerungen durchführen lassen, um Seiten in den Arbeitsspeicher und aus dem Arbeitsspeicher zu bekommen und 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 laufenden Dienste entfernt, die Shell ersetzt,
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.
quelle
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 anfängt zu versagen. 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.
quelle
Sie werden auch mit 1 GB (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.
Wenn Sie keine Aufgaben berechnen, für die Datasets mit Hunderten von Gigabyte erforderlich sind und auf die (dies ist wichtig!) Daten mehr oder weniger auf einmal zugegriffen wird, möchten Sie niemals einen Swap haben, 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 was passiert, wenn Sie sie verwenden? 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 Dies 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 des Arbeitsspeichers, den Sie benötigen, kommen von Leuten, die etwas wiederholen, was sie über Jahrzehnte gehört (und nicht verstanden haben!), Von jemandem, der etwas wiederholt hat, was sie über Jahrzehnte gehört (und nicht verstanden haben!) vor.
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 sie gilt heutzutage überhaupt nicht mehr .
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 damit die Welt nicht sofort untergeht, wenn Sie einmal nach etwas mehr Speicher fragen. Aber das ist es.
quelle