Lo swap e' uno spazio su disco utilizzato dal sistema quando la RAM e' piena.

Lo swap puo' essere in forma di:

  1. una partizione su disco;
  2. un semplice file.

Tipicamente, quando il sistema e' su una macchina virtuale, non e' presente una partizione dedicata allo swap, quindi viene utilizzata l'opzione 2.

Controllare che lo swap sia abilitato

Con questo comando si puo' vedere lo swap disponibile:

sudo swapon --show

Se l'output del comando e' vuoto significa che lo swap non e' abilitato.

Aggiungere spazio swap al sistema

Nel seguente esempio aggiungo 1GB di swap:

# Creo il file di swap
sudo fallocate -l 1G /swapfile

# Solo root puo' leggere/scrivere il file di swap
sudo chmod 600 /swapfile

# Setup dell'area di swap sul file
sudo mkswap /swapfile

# Attivo il file di swap
sudo swapon /swapfile

Per rendere le modifiche permanenti, modifico il file /etc/fstab:

# Apro il file
sudo nano /etc/fstab

# Aggiungo questa riga al file
/swapfile swap swap defaults 0 0

Posso verificare la memoria disponibile di sistema con il comando:

sudo free -h

Aggiustare lo swappiness

Lo swappiness e' una proprieta' del kernel, si tratta di un valore tra 0 e 100 che indica quanto utilizzare la memoria swap.

Piu' il valore e' basso, piu' il sistema operativo cerchera' di evitare l'uso dello swap.

Il valore di default e' 60, ed e' scritto nel seguente file:

cat /proc/sys/vm/swappiness

Il valore di default e' ok in generale, in un ambiente di produzione pero' potresti volerlo abbassare.

Se volessi, per esempio, modificarlo a 10 usa il seguente comando:

sudo sysctl vm.swappiness=10

Se volessi anche rendere la modifica permanente, aggiungi la seguente riga al file /etc/sysctl.conf:

vm.swappiness=10

Rimuovere un file di swap

Disattiva il file di swap:

sudo swapoff -v /swapfile

Rimuovi la riga aggiunta in precedenza al file /etc/fstab:

/swapfile swap swap defaults 0 0

Rimuovi definitivamente il file:

sudo rm /swapfile

Riferimenti utilizzati per scrivere questa guida: