Wie kann ich Swap dauerhaft ausschalten?

64

Swap macht mein System sehr träge und das Ausschalten macht alles ruhiger. Ich habe 3,5 GB RAM.

Ich weiß, wie man Swap ausschaltet, indem man sudo swapoff -adas Terminal betritt , aber das ist nur für die aktuelle Sitzung, denn nach einem Neustart schaltet sich Swap wieder ein. Gibt es eine Möglichkeit, den Swap dauerhaft auszuschalten?

Alex Li
quelle
2
AFAIK der Swap wird für den Winterschlaf verwendet. Einfach sagen
DanMan
1
Ja, aber es kann immer noch verwendet werden. Ich habe ein kleines Skript, das die Auslagerungspartition bereitstellt, wenn das System in den Ruhezustand wechselt, und die Bereitstellung aufhebt, wenn es wieder verfügbar ist. Die Auslagerungsdatei muss in der Zwischenzeit nicht aktiv sein.
animaletdesequia
Einfach swapoff -a in /etc/rc.local einfügen und vergessen ...;)
user264467
1
@ user264467: Es ist nicht ganz intuitiv, Swap aktiviert zu lassen, nur um es bei jedem Neustart zu deaktivieren. Es ist viel sauberer, es dauerhaft zu deaktivieren.
Karatedog

Antworten:

119

Darf ich einen sichereren Ansatz vorschlagen? Sie wissen nie, wann Swap Sie vor Abstürzen bewahren kann. Während das Austauschen Ihren Computer verlangsamt, können Sie sich durch die Möglichkeit des Austauschs einen harten Neustart ersparen, wenn Sie ein Programm verwenden, das den gesamten Arbeitsspeicher belegt. Wenn der Computer zu tauschen beginnt, werden Sie feststellen, dass die betreffende Anwendung beendet werden kann.

Stellen Sie also sicher, dass Ihr Betriebssystem nur sehr selten wechselt , anstatt Swap vollständig zu deaktivieren . Dies wird durch die vm.swappinessEinstellung in gesteuert /etc/sysctl.conf. Die Standardeinstellung von Ubuntu ist, 60wenn ich mich richtig erinnere, was für die meisten Situationen zu viel ist und dazu führt, dass Sie mit dem Auslagern beginnen, auch wenn noch RAM verfügbar ist. Wenn Sie diesen Wert verringern, können Sie die Sicherheits-Swap-Leitung beibehalten, während Sie sie nur für Notfälle verwenden. Öffnen Sie also die Datei:

sudo nano /etc/sysctl.conf

Und füge diese Zeile hinzu:

vm.swappiness=10

Wenn das immer noch zu viel ist, ändern Sie die 10 auf 1. Jetzt, nach dem Neustart, werden Sie nur dann tauschen, wenn es absolut notwendig ist, und Sie können es einfach vergessen.

terdon
quelle
Ich liebe es, Swappines zu wechseln, und das habe ich seit Jahren nicht mehr gemacht. Danke für die Erinnerung. sudo upvote turdon!
Darth Egregious
16
Nur um das Argument "sicherer" zu ergänzen: Wenn Sie keinen Swap haben und das System nicht genügend Arbeitsspeicher hat, wird der Linux-OOM-Killer (Out of Memory) aufgerufen. Dies wählt einen Prozess auf der Grundlage eines "Badness" -Wertes aus und beendet ihn dann (wird beendet, geschlossen), ohne dass die Anwendung die Änderungen speichern, bereinigen usw. kann Gedächtnis, Sie laufen sehr gut Gefahr, Arbeit zu verlieren, wenn wichtige Prozesse in den Augen des OOM-Killers schlecht abschneiden. Aus diesem Grund sollten Sie Swap nur deaktivieren, wenn Sie sicher sind , dass Ihnen niemals der Speicher ausgeht.
Reid
5
@Reid es lohnt sich darauf hinzuweisen, dass offensichtlich genau das gleiche passiert, wenn Ihnen auch der Swap-Platz ausgeht.
o0 '.
11
Dies beantwortet die Frage nicht wirklich. Das Deaktivieren von Swap insgesamt kann auf einem System mit 16 GB oder 32 GB RAM sehr sinnvoll sein. Ein paar zusätzliche GB Swap sind bei speicherfressenden Anwendungen nicht sinnvoll, während ein großer Swap-Speicher (z. B. 20 GB) viel Festplatten- / SSD-Speicherplatz in Anspruch nimmt. Auch der Ruhezustand mit 32 GB RAM macht keinen Spaß .
JMISEREZ
7
Bei einigen Setups wird das System unbrauchbar, sobald der physische Arbeitsspeicher erschöpft ist und der Austausch beginnt. Ja, theoretisch können Sie einsteigen und den Täter töten, aber wenn es mehr als 20 Minuten dauert, um den Fokus in der Benutzeroberfläche zu ändern und sogar länger, um eine Passwortabfrage über SSH zu erhalten, ist das OOMing die beste Option (gefolgt von einem harten Neustart, gefolgt von Einsteigen und Beheben des Problems).
BCS
46

Suchen Sie die Zeile in / etc / fstab, die sich auf swap bezieht, und kommentieren Sie sie. Meins ist so:

UUID=6880a28d-a9dc-4bfb-ba47-0876b50e96b3 /               ext4    errors=remount-ro 0       1
UUID=7350e6f2-e3a7-4d80-9a95-8741c7db118f /home           ext4    defaults        0       2
UUID=E2E26AD1E26AAA0D /media/windows  ntfs    defaults,umask=007,gid=46 0       0

# Swap a usb extern (3.7 GB):
#/dev/sdb1 none swap sw 0 0

Sie können diese Datei mit gedit bearbeiten. Sichern Sie es zuerst, nur für den Fall:

sudo cp /etc/fstab /etc/fstab_backup
gksu gedit /etc/fstab

Fügen Sie einfach # am Anfang der Zeile hinzu, in der sich Swap befindet, und starten Sie den Computer neu.

ODER

Probieren Sie die Befehlszeilenmethode zum Auskommentieren des Swap-Eintrags in der /etc/fstabDatei aus.

sudo sed -i.bak '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
animaletdesequia
quelle
Ich bekomme das, wenn ich tippegksu gedit /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> /host/ubuntu/disks/root.disk / ext4 loop,errors=remount-ro 0 1 /host/ubuntu/disks/swap.disk none swap loop,sw 0 0
Alex Li
1
Also, mach was er sagt. Kommentieren Sie die erste Zeile aus, die sich auf "Swap" bezieht. : P
cHao
13

Löschen Sie einfach den Eintrag aus fstab (oder kommentieren Sie ihn mit # vor der Zeile) und starten Sie ihn neu. Suchen Sie nach der Zeile mit dem Wort "Swap".

sudo nano /etc/fstab
mdalacu
quelle
10
Dies würde auch funktionieren, aber ich denke, es ist besser, die Zeile zu kommentieren, als sie vollständig zu entfernen, nur für den Fall, dass Sie die Änderungen rückgängig machen möchten.
animaletdesequia
1
Ich habe meinen Beitrag bearbeitet.
mdalacu
11

Falsch. Wenn systemd eine SWAP-Partition auf einem Laufwerk findet, wird sie trotzdem automatisch bereitgestellt. Seltsam, dass niemand systemd erwähnte. Die Lösung ist sowieso recht einfach; Um den Swap dauerhaft zu deaktivieren, müssen Sie:

  1. Swapoff -a
  2. Bearbeiten Sie / etc / fstab und kommentieren Sie etwaige Swap-Einträge, falls vorhanden.
  3. run: sudo systemctl mask dev-sdXX.swap (wobei XX die Swap-Partition ist. Auch nützlich für alle möglichen Partitionen, damit eine Swap-Partition auf einem anderen Laufwerk nicht gemountet wird)

Entspann dich.

Zibri
quelle
Nummer 3 für den Gewinn !!
oneklc