Come posso disattivare lo scambio in modo permanente?


65

Swap rende il mio sistema tutto lento e spegnerlo rende tutto più fluido. Ho 3,5 GB di RAM.

So come disattivare lo scambio entrando sudo swapoff -anel terminale, ma è solo per la sessione corrente, perché dopo un riavvio lo scambio si riaccende. C'è un modo per disattivare definitivamente lo swap?


2
AFAIK lo swap viene utilizzato per l'ibernazione. Solo dicendo
Danman

1
Sì, lo è, ma può ancora essere utilizzato. Ho un piccolo script che monta la partizione di swap quando il sistema va in letargo e lo smonta quando torna. Il file di scambio non deve essere attivo nel frattempo.
animaletdesequia,

Basta inserire swapoff -a in /etc/rc.local e dimenticarsene ...;)
user264467

1
@ user264467: è abbastanza controintuitivo lasciare lo swap abilitato solo per disabilitarlo ad ogni riavvio, è molto più pulito disabilitarlo in modo permanente.
Karatedog,

Risposte:


119

Posso suggerire un approccio più sicuro? Non si sa mai quando lo swap può salvarti dal crash. Mentre lo scambio rallenta davvero il tuo computer, se usi un programma che consuma tutta la tua RAM, avere la possibilità di scambiarti può salvarti da un riavvio difficile. Quando il computer inizia a scambiare, noterai e sarai in grado di uccidere l'applicazione offensiva.

Quindi, invece di disabilitare del tutto lo swap, assicurati che il tuo sistema operativo si scambi molto raramente. Questo è controllato vm.swappinessdall'impostazione in /etc/sysctl.conf. L'impostazione predefinita di Ubuntu è 60se ricordo correttamente che è troppo per la maggior parte delle situazioni e ti farà iniziare a scambiare anche mentre la RAM è ancora disponibile. Se riduci questo valore, sarai in grado di mantenere la linea di sicurezza dello swap mentre lo usi solo per le emergenze. Quindi, apri il file:

sudo nano /etc/sysctl.conf

E aggiungi questa riga:

vm.swappiness=10

Se è ancora troppo, cambia il 10 in 1. Ora, dopo il riavvio, cambierai solo quando assolutamente necessario e puoi semplicemente dimenticartene.


Adoro cambiare swappine e non lo faccio da anni. Grazie per il promemoria. sudo valuti turdon!
Darth Egregious,

16
Solo per aggiungere all'argomento "approccio più sicuro": quando non si ha swap e il sistema esaurisce la memoria, viene richiamato il killer Linux OOM (Out Of Memory). Questo seleziona un processo basato su un punteggio di "cattiveria" e poi ... lo uccide (termina, chiude) senza alcuna possibilità per l'applicazione di salvare le sue modifiche, ripulire, ecc. Pertanto, se si disattiva lo scambio e si esaurisce memoria, corri molto bene il rischio di perdere il lavoro se i processi importanti ottengono scarsi risultati agli occhi dell'assassino OOM. Quindi, dovresti disattivare lo scambio solo se sei sicuro di non rimanere mai senza memoria.
Reid,

5
@Reve la pena sottolineare che, ovviamente, accadrà la stessa cosa esatta se si esaurisce anche lo spazio di swap.
o0 '.

11
Questo in realtà non risponde alla domanda. Disabilitare del tutto lo swap può avere molto senso su un sistema con 16 GB o 32 GB di RAM. Qualche GB in più di swap non farà nulla di buono nel caso di applicazioni che consumano memoria, mentre una grande quantità di swap (ad es. 20 GB) occuperebbe molto spazio su disco rigido / SSD. Inoltre, il letargo con 32 GB di RAM non è divertente .
jmiserez,

7
Per alcune impostazioni, non appena si esaurisce la RAM fisica e si avvia lo scambio, il sistema inizia a "succhiare il fango" e diventa inutilizzabile. Sì, in teoria puoi entrare e uccidere l'autore del reato, ma quando ci vogliono più di 20 minuti per cambiare il focus nell'interfaccia utente e anche più a lungo per ottenere una richiesta di password tramite SSH, l'OOMing finisce per essere l'opzione migliore (seguita da un duro riavvio, seguito da accesso e risoluzione del problema).
BCS,

47

Trova la riga in / etc / fstab facendo riferimento a swap e commentala. Il mio è così:

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

Puoi modificare questo file con gedit. Effettua prima il backup, nel caso in cui:

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

Basta aggiungere # all'inizio della riga in cui si trova lo scambio e riavviare il computer.

O

Prova il modo da riga di comando di commentare la voce di scambio nel /etc/fstabfile,

sudo sed -i.bak '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

Lo capisco quando scrivogksu 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
Quindi, fai quello che sta dicendo. Commenta la prima riga che si riferisce a "swap". : P
cHao

14

Basta eliminare la voce (o commentarla usando # davanti alla riga) da fstab e riavviare. Cerca la riga con la parola "swap" in essa.

sudo nano /etc/fstab

10
Anche questo funzionerebbe, ma penso che sia meglio commentare la linea piuttosto che rimuoverla completamente, nel caso in cui si desideri annullare le modifiche.
animaletdesequia,

1
Ho modificato il mio post.
mdalacu,

11

Sbagliato .. se systemd trova una partizione SWAP su qualsiasi unità, la monterà automaticamente. Strano che nessuno abbia menzionato systemd. La soluzione è comunque abbastanza semplice; per disabilitare permanentemente lo swap devi:

  1. swapoff -a
  2. modifica / etc / fstab e commenta eventuali voci di scambio se presenti.
  3. run: sudo systemctl mask dev-sdXX.swap (dove XX è la partizione di swap. Utile anche per farlo per tutte le possibili partizioni in modo che se c'è una partizione di swap su qualsiasi altra unità non verrà montata)

Pace fuori.


numero 3 per la vittoria !!
oneklc,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.