Aggiungere la memoria di swap al nostro sistema è sicuramente una buona pratica, sopratutto per macchine con poca disponibilità di RAM.

Per vedere nel dettaglio come funziona e cosa serve la memoria di swap, consiglio la lettura di questo articolo.

Qui vedremo invece come si fa ad aggiungere memoria di swap su un sistema Linux. E’ possibile aggiungerla usando una partizione dedicata (soluzione più comune) o usando semplicemente un file (soluzione meno comune ma comunque efficace).

Iniziamo col cercare di capire se e quanta memoria di swap abbiamo al momento nel nostro sistema. Per farlo, possiamo:

Eseguire cat /proc/swap. o swapon -s Un esempio di output:

cat /proc/swaps
Filename Type Size Used Priority

Non essendoci memoria swap installata, non ci sono entries.

Eseguire free -h:

             total       used       free     shared    buffers     cached
Mem:          7,7G       6,6G       1,1G       581M       372M       2,3G
-/+ buffers/cache:       4,0G       3,7G
Swap:           0B         0B         0B

che ci indicherà la quantità di memoria di swap.

Visto la similarità dei comandi necessari per creare la memoria di swap, vediamo prima di tutto come si crea usando un file.

Creare spazio di Swap usando un file

Prima di tutto abbiamo bisogno di creare un file che verrà utilizzato come archivio per la nostra memoria agguntiva. Per farlo, utilizzeremo l’utility dd. Questa ci permette di convertire e copiare file. E’ uno strumento molto utile e potente di cui vi consiglio di consultare il man (man dd) per approfondirlo.

Usiamo il seguente comando per creare un file di 1GB che verrà utilizzato per la nostra memoria di swap:

dd if=/dev/zero of=/swapfile bs=1M count=1024

In alternativa, possiamo anche utilizzare l’utility fallocate (che permette di preallocare lo spazio per un file):

sudo fallocate -l 4G /swapfile

 

Per assicurarci che la corretta quantità di spazio è stata correttamente allocata, possiamo lanciare il comando:
ls -lh /swapfile
-rw-r--r-- 1 root root 4,0G giu 1 18:43 /swapfile

Ok, da quì in poi è possibile seguire il procedimento per quanto riguarda l’alternativa della partizione, è pressochè identico:

mkswap /swapfile

Usiamo questo programma per creare lo swapfile, e infine attiviamo lo spazio di swap usando:

swapon /swapfile

Creare una partizione di swap

Come preannunciato poco sopra, i comandi sono molto simili:

mkswap /dev/sda5

Ci permette di creare una partizione di swap sulla partizione sda5.

Per dire al sistema di utilizzare la partizione come memoria di swap invece, usiamo il comando swapon:

swapon /dev/sda5

Montare la partizione all’avvio

Ora che abbiamo creao il nostro spazio di swap, dobbiamo istruire il sistema in modo che ce lo monti ad ogni avvio. Per fare ciò,  possiamo usare il file /etc/fstab che contiene le configurazioni da seguire per quanto riguarda i mount.

La riga da aggiungere in fondo al file, è la seguente per il file:

/swapfile   none    swap    defaults    0   0

mentre è la seguente per la partizione:

/dev/sda5   none    swap    defaults    0   0

Perfetto! Abbiamo correttamente impostato la memoria di swap nel nostro sistema. E’ possibile verificarlo usando i comandi spiegati all’inizio, ad esempio con free -h:

             total       used       free     shared    buffers     cached
Mem:          7,7G       6,4G       1,3G       300M       380M       2,0G
-/+ buffers/cache:       4,0G       3,6G
Swap:         2,0G         0B       2,0G

In caso ci servisse (a me è servito per scrivere questo articolo!) è possibile disattivare la memoria di swap utilizzando il comando swapoff -a.

Possiamo riattivarlo usando il comando swapon -a.

Quanto spazio dovrei usare per lo swap?

In generale possiamo siamo piuttosto liberi riguardo a questo. Le quantità consigliate sono:

  • Per un pc desktop, il doppio della memoria. Se abbiamo 2 GB usiamo 2 GB per lo spazio di swap.
  • Per un server, metà della memoria. Questo perchè non vogliamo che i programmi in esecuzione vengano rallentate. Se viene usata troppa swap bisognerebbe aumentare la quantità di ram.
  • Per pc desktop più vecchiotti (con ram da 128MB), tutta la memoria che ti avanza (anche 1GB).

 

Per approfondire e fonti: