Gibt es eine maximale Größe, bei der eine Auslagerungsdatei funktionieren kann?

8

Soweit ich weiß, ist die theoretische Grenze für eine Auslagerungsdatei wahnsinnig groß, je nachdem, ob ein 32-Bit- oder ein 64-Bit-System verwendet wird.

Ich habe eine 16-GB-Auslagerungsdatei auf einem 4-GB-RAM-64-Bit-System mit ansonsten niedrigen Durchschnittsspezifikationen erstellt, da ich mehr als genug Speicherplatz auf meiner internen 1-TB-Festplatte habe ...

Aber macht die große Auslagerungsdatei tatsächlich einen Unterschied in Geschwindigkeit / Leistung?

Devon van Schoor
quelle
1
Siehe auch
Byte Commander
2
IMO, wenn Sie Swap verwenden, brauchen Sie wirklich mehr RAM, keine größere Swap-Datei
Panther
1
Wenn Sie Festplatten verwenden, sollten Sie stattdessen zram verwenden und die Priorität der HDD-Swaps verringern . Und eine so große Swap-Partition wird nicht helfen, weil Ihr System nach dem Typ, den Sie wie 4 GB Swap verwenden, nur langsam
gecrawlt hat
2
Siehe auch
PerlDuck
Soweit ich mich erinnere, verbraucht eine Auslagerungsdatei etwas physischen RAM (ich denke weniger als 1% der Größe der Auslagerungsdatei). Eine übermäßig große Auslagerungsdatei kann daher aufgrund dieses Speicherverbrauchs die Leistung beeinträchtigen. Bei einer Swap-Datei mit angemessener Größe ist dies jedoch kein Problem.
Kasperd

Antworten:

7

Sie können bis zu 32 Auslagerungsbereiche (Dateien oder Partitionen) mit jeweils bis zu ~ 4 Milliarden (2 ^ 32) Seiten haben, wobei eine "Seite" auf einem herkömmlichen System (z. B. x86 oder x86_64) 4 KB groß ist, auf einem anderen jedoch größer sein kann Architekturen oder wenn Sie große Seiten speziell konfiguriert haben.

Dies ergibt ein theoretisches Maximum von 16 TB pro Swap-Bereich und bis zu 32 Swap-Bereiche. Möglicherweise gelten andere Einschränkungen, bevor Sie dies erreichen. Dies ist jedoch ein ebenso großer Swap-Bereich, den Sie mkswaperstellen können.

Wie viel Sie möchten, jeder Swap-Bereich, der über das tatsächlich genutzte Maximum hinausgeht, trägt nichts zur Systemleistung oder -stabilität bei. Der Trick besteht darin, die maximale Auslastung zu schätzen, die jemals in einer normalen oder sogar abnormalen Situation auftreten wird, und diese als Auslagerungsdateigröße und nicht mehr zu verwenden.

Zum Zeitpunkt des Schreibens ist es sehr unwahrscheinlich, dass ein Swap-Speicherplatz verwendet wird, der größer als etwa 4 GB mehr als Ihre physische Speichergröße ist, es sei denn, Ihr System ist sehr abnormal. Auf einem typischen System wie einem Desktop-System, das jeweils von einer Person verwendet wird, können Sie wahrscheinlich sogar bei maximal 6 GB bis 8 GB anhalten, selbst wenn Ihr physischer Speicher größer ist.

thomasrutter
quelle
6

Es macht keinen Unterschied in Bezug auf Geschwindigkeit oder Leistung. Sie können lediglich bis zu 20 GB virtuellen Speicher verwenden, bevor der OOM-Killer Prozesse beendet, um Speicher zurückzugewinnen.

Wenn Sie eine bessere Leistung wünschen:

  • Verringern swappinessSie den Wert, wenn Sie nicht so oft mehr als 4 GB verwenden
  • RAM hinzufügen
  • Wechseln Sie zu einer SSD und legen Sie die Auslagerungsdatei darauf
Chai T. Rex
quelle
Wenn Sie häufig Speicherblöcke austauschen müssen, ist eine SSD aufgrund ihrer Architektur und begrenzten Schreibzyklen nicht der richtige Weg, da sie die Schreibzyklen der SSD sehr schnell verbrauchen kann. Wenn Sie nur gelegentlich auf den Bedarf an Swap-Speicher stoßen, sind SSDs in Ordnung.
Videonauth
11
@Videonauth: "Verbrauchen Sie die Schreibzyklen der SSD sehr schnell": Jede Art von halbwegs anständiger moderner SSD kann jahrelang Tag für Tag die volle Kapazität der SSD schreiben . Ihr Rat war 2010 vielleicht richtig, aber er ist veraltet. Selbst eine Samsung SSD 840 mit 256 GiB für Endverbraucher kann mehr als 2 Jahre lang 100 GiB pro Tag schreiben .
AlexP
Wenn Sie über viel RAM verfügen, macht das Verringern der Swappiness noch weniger Unterschied als bei begrenztem RAM. Wenn Sie tatsächlich viel RAM installieren, werden alle anderen Änderungen zum Auslagern überflüssig, wenn dies ausreicht, um ein Auslagern zu vermeiden. Behalten Sie eine Swap-Partition für Stabilität "nur für den Fall", 99,9% der Zeit wird sie nicht verwendet, und Sie behalten eine hervorragende Leistung.
Thomasrutter
1
Außerdem ist die Sache mit begrenzten SSD-Schreibzyklen seit über einem Jahrzehnt nicht mehr wahr. Es ist wirklich an der Zeit, dass diese FUD aufgerufen wird. Entschuldigung, dieser Kommentar ist so überflüssig, dass AlexP dies bereits angesprochen hat, aber er muss unterstrichen werden. SSDs eignen sich hervorragend für schreibintensive Anwendungen.
Thomasrutter
1
Die Verschleißnivellierung bei SSDs wurde um 2008 zu einem Thema (Artikel von 2008 | Anandtech-Artikel 2009 ). "Haben Laptops zu normalen Verbraucherpreisen 2008 sogar SSDs geliefert?" Nein, SSDs waren verrückt teuer und nicht wirklich Standard.
Thomasrutter
3

Nach der Antwort von Gilles

... Früher gab es eine Beschränkung der Swap-Größe von 2 GB (auf den meisten 32-Bit-Plattformen), aber dies ist seit Jahren nicht mehr der Fall. Die Einschränkung wurde irgendwann in der 2.2-Kernel-Serie aufgehoben.

Zusätzlich zitiert er Manpage für mkswap:

Die maximal nützliche Größe eines Swap-Bereichs hängt von der Architektur und der Kernel-Version ab.

In der Bibliothek linux / swap.h gibt es einen MAX_SWAPFILESEintrag, daher ist die Anzahl der Auslagerungsdateien auf Kernelebene begrenzt, dies ist jedoch anscheinend auch kein endgültiger Bereich. Nach dem verlinkten Dokument:

Es ist zu beachten, dass die sechs Bits für "Typ" die Existenz von bis zu 64 Auslagerungsbereichen in einer 32-Bit-Architektur anstelle der MAX_SWAPFILES-Einschränkung von 32 ermöglichen sollten

Was ich verstehe, hat maximal bis zu 64 Auslagerungsdateien auf den 32-Bit-Architekturen. Ich habe jedoch in dem Dokument nicht bemerkt, was bei einer 64-Bit-Architektur passieren würde. Erwähnenswert ist auch, dass in diesem Fall die Bemühungen von OP, Auslagerungsdateien zu erstellen, beim 30. Eintrag fehlgeschlagen sind.

Was Swap-Partitionen betrifft, scheint es im Kernel keine Begrenzung zu geben, abgesehen von zuvor erwähnten Konstaten, aber die Anzahl der Partitionen würde immer noch durch das zugrunde liegende BIOS und das Festplattenlayout begrenzt .

Sergiy Kolodyazhnyy
quelle
2

Diese Antwort ist möglicherweise nicht für Ubuntu 18.04 geeignet (danke an @Chai T. Rex für den Hinweis in den Kommentaren).

Wie auch immer für frühere Versionen, hier ist es (es gibt noch kein vorgeschlagenes Update LTS> LTS, daher könnte dies immer noch relevant sein):

Es ist keine Datei, es ist eine Partition, und ja, aufgrund von Swappiness

Der Parameter swappiness steuert die Tendenz des Kernels, Prozesse aus dem physischen Speicher auf die Auslagerungsdiskette zu verschieben. Da Festplatten viel langsamer als RAM sind, kann dies zu langsameren Antwortzeiten für System und Anwendungen führen, wenn Prozesse zu aggressiv aus dem Speicher verschoben werden.

Wenn Ihre Swap-Partition also viel größer ist als der RAM, über den Sie verfügen, neigt das System dazu, mehr zu tauschen, was zu einer allgemeinen Langsamkeit führt.

dadexix86
quelle
4
Es gibt jetzt Auslagerungsdateien, und diese sind die Standardeinstellungen (anstelle von Partitionen), wenn 18.04 von Grund auf neu installiert wird.
Chai T. Rex
1
Ich gehe davon aus, dass das Verhalten von Swap ziemlich gleich bleibt, egal ob es von einer Partition oder einer Datei unterstützt wird. Sie können auch mehrere Auslagerungsdateien und / oder Partitionen gleichzeitig haben. Ich glaube jedenfalls nicht, dass mehr Swap einen negativen Effekt haben würde, solange noch genügend RAM übrig ist.
Byte Commander
Ich würde dasselbe annehmen, aber bis ich es in die Hände bekomme, ist dies nur eine wilde Annahme
dadexix86
Es gibt Swap-Partitionen und es gibt Swap-Dateien. Swap-Partitionen können von zwei oder mehr Linux-Installationen auf demselben PC verwendet werden (Dual Boot oder Triple Boot). Swap-Partitionen sind besser bei voller Festplatte, bei der die Swap-Datei fragmentiert erstellt werden könnte. ... Die Auslagerungsdateien funktionieren genauso gut wie die Auslagerungspartitionen, wenn sie auf nicht vollständigen Datenträgern erstellt werden, um eine Fragmentierung zu vermeiden. - Devon van Schoor j
Devon van Schoor
2

Es gibt keinen großen Unterschied in Geschwindigkeit oder Leistung, wenn die Swap-Partition beliebig groß wird.

Es gibt verschiedene Faktoren im Zusammenhang mit dem Austausch, die sich auf die Leistung auswirken können, z. B. den swappinessFestplattentyp (SDD oder HDD).

Der Swap ist ziemlich langsam und eine zunehmende Swapiness verringert die Leistung. Dies wirkt sich jedoch nur aus, wenn nicht genügend RAM vorhanden ist. Aber es ist besser, als keinen Tausch zu haben. Meine Empfehlung ist, die Größe der Swap-Partition doppelt so groß wie Ihr RAM zu machen.

Zanna
quelle
5
Diese Empfehlung ist veraltet. Moderne Systeme mit 32 oder 64 GB RAM benötigen keinen 64 oder 128 GB Swap
phuclv
3
@ LưuVĩnhPhúc Ich würde heutzutage nicht mehr als 2 GB Swap verwenden ...
el.pescado
2 GB scheinen sehr niedrig zu sein ... virtuelle Maschinen oder Spiele könnten wirklich sehr schnell mehr als 2 GB Swap füllen. Ich denke, 4 bis 8 GB Swap funktionieren gut mit jeder Menge RAM. Wenn Sie mehr als 8 GB benötigen, sollten Sie wahrscheinlich mehr RAM hinzufügen.
Germain
0

Ich komme zu der Tatsache, dass eine Auslagerungsdatei oder eine Auslagerungspartition praktisch keine Begrenzung hat. Außerdem ist meine 16-GB-Auslagerungsdatei ziemlich groß, aber die Größe hat keinen Einfluss auf die Geschwindigkeit.

Was ich jedoch erfahre, ist, dass das System tatsächlich diesen Swap-Bereich nutzt, im Gegensatz zur physischen Hardware.

Meine Lösung besteht darin, einen hohen Swapiness-Wert zu erzielen, damit der Swap im Gegensatz zur schnelleren Hardware nicht übermäßig verwendet wird. so tat ich:

sudo -s
nano /etc/sysctl.conf

Zur Datei hinzugefügt:

#vm.swappiness = 50

speichern

sudo sysctl -p

zu aktualisieren (oder hätte gerade neu gestartet werden können)

Devon van Schoor
quelle
Das Hinzufügen der Zeile #vm.swappiness = 50zu /etc/sysctl.confhat keine Auswirkung. Die führende #Zeile macht diese Zeile zu einem Kommentar. Entfernen Sie sie. Sie können den Austausch mit überprüfen cat /proc/sys/vm/swappiness.
mook765
Aber die von mir beschriebene Methode hat funktioniert. Wenn ich [cat / proc / sys / vm / swappiness] eingebe, bekomme ich 50 als Ausgabe
Devon van Schoor