SWAP in Linux
Guida alla creazione e configurazione dello spazio swap su Linux.
SWAP (spazio di swap) è un meccanismo di memoria virtuale in Linux che sposta i dati inattivi dalla RAM al disco (HDD o SSD) per liberare memoria fisica a favore dei processi attivi. Funziona come buffer di emergenza quando la RAM è quasi esaurita, ma l'accesso al disco è decine di migliaia di volte più lento rispetto alla RAM: un utilizzo intensivo dello swap rallenta quindi sensibilmente il sistema.
In Linux, la RAM è suddivisa in pagine. Lo swapping è il processo che copia le pagine meno utilizzate in un'area disco dedicata chiamata swap space (un file o una partizione dedicata). RAM e swap space insieme costituiscono la memoria virtuale totale disponibile per il sistema.
Perché serve lo swap
Lo swap assolve due funzioni principali:
- Quando il sistema necessita di più memoria di quella disponibile, il kernel sposta le pagine meno utilizzate nello swap, liberando RAM per i processi attivi.
- Molte pagine caricate dalle applicazioni all'avvio vengono raramente usate in seguito. Il sistema può spostarle nello swap, mantenendo la RAM disponibile per i task più importanti.
Svantaggi dello swap
Il principale svantaggio è la velocità. Le operazioni in RAM avvengono in nanosecondi, quelle su disco in millisecondi — decine di migliaia di volte più lento. Un utilizzo intensivo dello swap produce rallentamenti evidenti.
Nota
Quando le applicazioni dipendono pesantemente dallo swap, le prestazioni calano in modo significativo. In questi casi, valuta di aumentare la RAM. Un'opzione è spostare il progetto su un VPS o un server dedicato più potente, con scalabilità delle risorse flessibile.
Sintomi comuni di carenza di memoria (in particolare per i database):
- Frequenti errori del sito come «connessione al database non riuscita» (ad es. crash di MySQL)
- Log contenenti InnoDB: Fatal error: cannot allocate memory for the buffer pool
- Risposta lenta del server anche con un basso utilizzo della CPU
Anche su SSD, le operazioni di swap passano attraverso il sottosistema disco, aumentando la latenza.
Se il sistema dipende intensamente dallo swap, è un segnale chiaro che occorre aumentare la RAM o ottimizzare l'applicazione. Valuta di passare a un VPS più potente o di migrare su un server dedicato.
Verificare la presenza dello swap
Esegui:
swapon -s
Esempio di output:
Filename Type Size Used Priority
/swapfile file 40956 40956 -1
Oppure per una panoramica rapida:
free -m
Esempio di output:
total used free shared buff/cache available
Mem: 488 160 7 40 320 259
Swap: 39 39 0
Se Swap mostra 0 o è assente — è necessario crearlo.
I nostri prodotti e servizi
Creare un file di swap (metodo consigliato)
- Crea un file di swap (esempio: 2 GB):
sudo fallocate -l 2G /swapfile
oppure
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
- Imposta i permessi corretti (solo root può leggere/scrivere):
sudo chmod 600 /swapfile
- Formattalo come swap:
sudo mkswap /swapfile
- Attiva il file di swap:
sudo swapon /swapfile
- Rendilo permanente — aggiungi a
/etc/fstab:
sudo nano /etc/fstab
Aggiungi questa riga alla fine:
/swapfile none swap sw 0 0
Salva (Ctrl+O → Invio → Ctrl+X).
- Verifica:
free -h
Facoltativo: regolare la swappiness
swappiness controlla quanto aggressivamente il sistema utilizza lo swap (0–100, valore predefinito 60).
Controlla il valore attuale:
cat /proc/sys/vm/swappiness
Imposta un valore più basso (consigliato per i server: 10–20):
sudo sysctl vm.swappiness=10
Per renderlo permanente, aggiungi a /etc/sysctl.conf:
vm.swappiness=10
Applica:
sudo sysctl -p
Aiuto
Hai domande o ti serve una mano? Scrivici tramite il sistema di ticket — siamo sempre qui per aiutarti!