Aggiornato il: 27-06-2022 00:00
Questo articolo tratterà pro e contro dell’utilizzo della memoria virtuale, o del relativo file di swap (paging o paginazione della memoria virtuale), determinando:
- se la tua VPS utilizza o meno la memoria virtuale;
- le differenze tra una partizione di swap e un file di swap
- dandovi informazioni su come creare un file di scambio e come configurare la memoria virtuale del sistema.
Swap e memoria virtuale, in effetti, sono due caratteristiche poco note e molto utili per configurare al meglio il nostro sito: con la memoria virtuale, infatti, il sistema sarà in grado di sopperire alla mancanza di RAM sfruttando una parte di spazio su disco. Stando alla teoria, inoltre, il cosiddetto paging risponde esattamente a questo requisito, impostando dei requisiti per uno scambio veloce ed efficiente.
Lo swap è una caratteristica sfruttabile anche a livello di siti web, in quanto i siti con alto utilizzo di RAM tendono a cadere facilmente, o comunque a rallentare i tempi di caricamento delle pagine. In particolare questa caratteristica dello swap viene molto usata sugli hosting con hard disk in SSD.
Immaginiamo di avere un VPS con (ad esempio) 512MB di RAM a disposizione, e sistema operativo Debian. All’interno della finestra del terminale SSH avremo a disposizione vari task e vari processi attivi, che occuperanno memoria variabile in base ai rispettivi requisiti. Sui server in produzione, cioè quelli relativi a siti web già online che girino su hosting VPS, tipicamente la memoria virtuale non è attiva, e deve essere impostata adeguatamente.
In questo modo non saremo costretti, compatibilmente non lo spazio a disposizione sul server, ad estendere la memoria RAM passando a piani VPS più costosi.
Requisiti
Per effettuare queste operazioni vi serviranno:
- un terminale di comando o PuTTY;
- accesso root via SSH al sito;
- i comandi da terminale free, swapon, swapoff, dd, mkswap
La memoria virtuale in realtà potrebbe essere stata già configurata, ma in questa guida vedremo come impostarla o reimpostarla a dovere. La regola empirica generale è quella di dimensionare lo swap fino a 2 volte la dimensione della RAM disponibile: ad esempio, se avete un VPS con 512MB di RAM, potete impostare lo swap con altri 512MB minimo e 1.5GB al massimo, per un totale di memoria a disposizione di 1 GB minimo e di 2 GB al massimo.
Vantaggi e svantaggi dello swap su VPS Linux
Se usate le droplet di DigitalOcean, cosa che faccio anch’io ad esempio, sono con hard disk SSD e non soffrono particolarmente di problemi di lentezza lato server. In alcuni casi, pero’, ad esempio su un sito configurato con NGINX, l’uso di RAM era molto più alto di quello di un server Apache, e quindi la configurazione dello swap era indispensabile per evitare l’insorgere (ad esempio) di rallentamenti sul sito oppure errori 500 e/o 530.
Vantaggi
- Maggiore memoria disponibile per il sito, il che si traduce in prestazioni “mediamente” migliori
- evitare problemi di stack overflow o di out of memory;
- velocizzare i tempi di caricamento delle pagine web ed il TTFB
Svantaggi
- Problemi nella gestione del disco fisso che tende a ridursi lato web (ad es. /var/www/html)
- Errori di configurazione che possono compromettere il funzionamento del sito, ad esempio per imperizia dell’operatore.
Procedura passo-passo: verificare lo spazio a disposizione
Come prima cosa, da terminale di comando lanciate il comando:
free
per verificare la memoria disponibile. Vedrete una tabella testuale con l’indicazione della memoria totale (total), di quella usata (used), di quella libera (free), del buffer (buffers) e della cache (cached). Questo si ripeterà per tutte le partizioni disponibili, al limite solo per l’unica che avete a disposizione.
Se è abilitata vedremo una cosa del genere:
total used free shared buffers cached Mem: 361996 360392 1604 0 1988 54376 -/+ buffers/cache: 304028 57968 Swap: 249896 0 249896
Se non lo è, free restituirà qualcosa del genere:
total used free shared buffers cached Mem: 361996 360392 1604 0 2320 54444 -/+ buffers/cache: 303628 58368 Swap: 0 0 0
Potete anche vedere solo lo swap usando il comando alternativo:
free | grep Swap
Creare il file di swap
Usate il comando df -h per vedere le informazioni sul disco della VPS. Il file di swap dovrebbe essere inserito in /var come ad esempio swap.img (che sarà il file della memoria virtuale gestito dal sistema). Quindi entriamo in /var, creiamo un file swap e lo impostiamo con permessi chmod a 600 per motivi di sicurezza.
cd /var touch swap.img chmod 600 swap.img
Dimensionare il file di swap
Come abbiamo scritto prima, se avete 0.5G di RAM fisica a disposizione, potete impostare la dimensione del file di swap fino a circa 1.5GB / 2.0GB. Ovviamente dovrete assicurarvi di avere a disposizione tale spazio sul disco, cosa che potete fare pulendo i file temporanei da ogni cartella, riducendo plugin installati, theme inutili, la dimensione delle immagini di WordPress e cosଠvia.
Sulle droplet di DigitalOcean può essere opportuno dimensionare il file con tutti zeri:
dd if=/dev/zero of=/var/swap.img bs=1024k count=1000
Inizializzare il disco
Impostiamo la memoria virtuale ad 1 GB (come scritto al passaggio precedente):
mkswap /var/swap.img
In alternativa potete sfruttare fallocate (dopo averlo installato con ccc) per indicare direttamente la dimensione desiderata dello swap.
sudo fallocate -l 1G /swapfile
Abilitare lo swap
Per abilitare lo swap
swapon /var/swap.img
Per disbailitarlo:
swapoff /var/swap.img
Potete verificare che lo swap sia attivo dando di nuovo il comando free.
Abilitare lo swap in automatico
Quello che bisogna fare come ultimo passaggio, è aggiungere una riga al file /etc/fstab
per abilitare la cosa.
Attenzione che questa operazione va effettuata con molta attenzione, per cui leggete un po’ di documentazione su fstab prima di procedere.
Il comando è questo, in genere:
echo "/var/swap.img none swap sw 0 0" >> /etc/fstab

Ingegnere per passione, consulente per necessità, docente di informatica; ho creato Trovalost.it e ho scritto quasi tutti i suoi contenuti. Ogni guida viene revisionata e aggiornata periodicamente. Per contatti clicca qui