Cosa Devi Sapere Sullo Spazio di Swap Su Linux

Quando installi Linux, il processo di configurazione aggiungerà probabilmente una partizione di swap al disco rigido insieme alle partizioni per Linux stesso. Ma a cosa serve questa partizione di swap ed è realmente necessaria?
Leggi anche: Ho Bisogno di Swap in Ubuntu? L’Approccio Realistico
Cos’è lo swap?
Quando un sistema operativo multitasking esaurisce la memoria fisica, non è in grado di avviare nuovi processi o allocare più memoria a processi esistenti. Per risolvere questo problema, viene riservato un blocco speciale di spazio sull’archiviazione locale (spesso il disco rigido) per fungere da area di attesa temporanea per i processi che non sono attualmente in esecuzione. Il sistema operativo “scambia” il processo inattivo dalla memoria al disco rigido. Questo libera memoria per nuovi lavori. Quando il processo inattivo diventa nuovamente attivo, verrà riportato indietro dall’archiviazione locale alla memoria. Questa procedura è nota come swapping.
Lo spazio di swap è realmente necessario?
Lo spazio di swap è tecnicamente necessario? No. Linux può funzionare senza di esso e in alcune situazioni, come le soluzioni embedded, Linux può essere eseguito senza swap. Se il sistema operativo si trova in una situazione in cui non ha abbastanza memoria, entrerà in panico e si fermerà. Se c’è abbastanza RAM fisica, la macchina funzionerà senza problemi.
Lo spazio di swap è praticamente necessario? Sì. Anche se lo swapping rallenta un computer (poiché leggere e scrivere su un disco rigido è molto più lento che accedere alla RAM) e avere molta memoria fisica a bordo è la soluzione migliore per evitare lo swapping, ci sono situazioni legittime in cui lo swapping è auspicabile. Ad esempio, durante l’avvio del sistema, ci possono essere processi che vengono eseguiti (e quindi consumano memoria di sistema) ma poi effettivamente dormono per periodi di tempo molto lunghi. O memoria che viene allocata, scritta e poi mai più utilizzata. In queste situazioni, l’algoritmo di swapping inizierà a migrare questa memoria sul disco rigido e così libererà preziosa memoria di sistema. Questo garantisce effettivamente che la massima quantità di RAM sia disponibile in ogni momento e così aumenta le prestazioni.

Su macchine che non hanno abbastanza RAM fisica affinché tutto risieda in memoria, l’uso dello spazio di swap è essenziale!
Per completezza, vale la pena menzionare che Linux ha anche un sottosistema chiamato Out-Of-Memory Killer (OOM), che invece di fermare il kernel quando esaurisce la memoria, inizierà a terminare i processi per liberare risorse. Le sue azioni sono configurabili.
Quanto spazio di swap dovrei allocare?
Non ci sono regole assolute e poiché lo spazio su disco rigido è economico (dollaro per Gigabyte) è meglio allocare troppo che troppo poco spazio. Come regola generale, dovresti avere due o tre volte la quantità di spazio di swap rispetto alla memoria fisica.
Aggiungere swap senza espandere la partizione di swap
Ci sono due modi per aggiungere spazio di swap a un sistema senza alterare la partizione di swap esistente. Un modo è utilizzare una partizione di swap su un altro disco, l’altro è utilizzare un file di swap.
Per utilizzare un altro disco rigido, crea una partizione di tipo “Linux swap” (codice 82) e poi esegui il comando “ mkswap ” per preparare lo spazio di swap:
mkswap /dev/sdb2Dove /dev/sdb2 è il nome della partizione che hai creato. Per utilizzare immediatamente lo spazio di swap usa il comando “ swapon ”:
swapon /dev/sdb2Usa “ swapon -s ” per ottenere un elenco degli spazi di swap attualmente utilizzati. Per aggiungere permanentemente lo spazio di swap al sistema, sarà necessario modificare il file /etc/fstab e aggiungere una riga simile a questa:
/dev/sdb2 none swap sw 00Se il tuo sistema utilizza identificatori unici per nominare i dischi, usa il comando blkid per ottenere un elenco di id per i dispositivi. La riga per montare lo spazio di swap in /etc/fstab apparirebbe quindi simile a questa:
UUID=036da155-1ea1-4392-b8d4-700f65aa1ead none swap sw 00Per utilizzare un file per lo swap, crea un grande file vuoto (usando dd) sul filesystem che desideri utilizzare per lo swapping. Ad esempio, per creare un file da 1GB, digita:
dd if=/dev/zero of=/store/swapfile bs=1024 count=1048576Dove /store/swapfile è il percorso del file di swap sul filesystem desiderato.
Come per la partizione di swap aggiuntiva, il file deve ora essere preparato con mkswap e poi utilizzato con swapon. Deve anche essere aggiunto al file /etc/fstab. La procedura è esattamente la stessa di sopra, ma devi utilizzare /store/swapfile piuttosto che /dev/sdb2 come parametro per lo spazio di swap.
Swappiness
Il kernel di Linux può essere regolato per definire quanto aggressivamente dovrebbe cercare di scambiare i processi dalla memoria. Questa tendenza è controllata da una variabile del kernel chiamata swappiness. Un swappiness di 0 significa che il kernel eviterà lo swapping il più possibile, mentre 100 significa che il kernel sarà aggressivo nell’uso dello spazio di swap. L’impostazione predefinita per molte distribuzioni Linux è 60. È possibile cambiare il numero dinamicamente utilizzando questo comando:
sudo sysctl vm.swappiness=10Per impostare permanentemente un valore, è necessario modificare (o aggiungere, se non esiste) la variabile vm.swappiness nel file /etc/sysctl.conf.
Fateci sapere se avete domande sullo swap in Linux.
Questo articolo è stato pubblicato per la prima volta a dicembre 2013 ed è stato aggiornato ad agosto 2020.