Aumentare al volo il quantitativo di SWAP su Linux
Attenzione
Questo articolo è stato pubblicato più di un anno fa, potrebbero esserci stati sviluppi.
Ti preghiamo di tenerne conto.
Oggi Parliamo di SWAP, di cosa sia, di quanta ce ne serva e di come aumentarla al bisogno. Chi vuole può saltare il preambolo e passare alla spiegazione di come aggiungere un file di SWAP al proprio sistema.
In tutti i computer moderni un unico modello di hardware è pressoché identico. Segue uno schemino che aiuti a capire semplicemente di cosa si parla:
- CPU register
- Cache
- Level 1
- Level 2
- RAM
- Memoria fisica
- Memoria virtuale (SWAP)
- Dispositivi di archiviazione
- ROM / BIOS
- Drive rimovibili
- Network / archiviazione online
- Disco fisso
- Periferiche input
- Tastiera
- Mouse
- Drive rimovibili
- Scanner / webcam / microfono
- Sorgenti remote
- Altre sorgenti
Come evidenziato nel nostro elenco nei sistemi operativi moderni la gestione della RAM è affidata a due supporti distinti: memoria fisica e memoria virtuale.
Per memoria fisica si intende il banco di ram tipico (hardware) installato negli slot dedicati sulla scheda madre. Si tratta di schede elettroniche che vengono scritte e sovrascritte svariate volte durante le sessioni di lavoro. Immagazzinano dati temporanei per permetterne l’accesso più velocemente.
La memoria virtuale invece è denominata comunemente nei sistemi Linux SWAP (o “file di paging” nei sistemi Microsoft). Si tratta di un settore del disco adibito a storage temporaneo (mi perdoneranno i tecnici del mestiere). Il discorso è molto complesso, e più articolato di come lo sto spiegando, ma per avere un quadro d’insieme semplificato basti pensare che quando la RAM è troppo poca il computer tende a rallentare sensibilmente per permettere ai task di avere accesso alle risorse. Se la RAM finisce il computer non smette di funzionare, ma alcuni task potrebbero andare in freeze o terminare inaspettatamente. Con un file o una partizione di SWAP invece si è ovviato al problema, di fatto andando a scrivere sull’HD le informazioni in eccesso che sarebbero dovute essere destinate alla RAM.
Nel caso di Linux è caldamente consigliata una partizione di SWAP, le cui dimensioni devono essere impostate a seconda della previsione dell’utilizzo della RAM. Il calcolo “spannometrico” che veniva fatto in passato era di impostare la partizione di SWAP alla metà della RAM. Con 2GB di RAM imposti 1GB di SWAP.
Questo potrebbe essere un calcolo semplice ed efficace quando il computer è vecchio, la RAM è poca e magari anche il disco non è grande. Nel mio caso il PC è già dotato di 16GB di RAM e il disco è da 1TB. Riesco ad occupare tutta la RAM solo quando eseguo rendering video o transcodifiche video di grandi dimensioni. Ci sono invece server condivisi (spesso in ambito aziendale) che devono gestire molti più dati rispetto ai miei e la RAM di 16GB potrebbe risultare troppo poca. In quel caso aggiungere una partizione di SWAP di 8GB risolverebbe ben poco (se occupi facilmente 16GB non ci metterai molto ad occuparne 24).
Per risolvere questo problema si è pensato al file di SWAP (fin’ora abbiamo parlato di partizioni). Un file di SWAP ha la stessa funzione della partizione con il grande svantaggio di avere i dati all’interno del filesystem e il grande vantaggio di poter essere ridimensionato a piacimento con qualche veloce comando. Generalmente l’uso della partizione di SWAP è consigliato per via delle migliori performance. Per questo motivo consiglio di testare l’effettivo utilizzo della SWAP preventivamente con i file e di allocare una partizione una volta avuto il quadro generale dell’effettivo utilizzo. Altra soluzione, non proprio elegante, potrebbe essere assegnare inizialmente una partizione di SWAP che, qualora risultasse insufficiente potrebbe essere integrata con un file.
Con la vendita in grandi quantità e la conseguente diminuzione del prezzo dei nuovi dischi SSD (Solid State Drive) la RAM, seppur importante, inizia a giocare un ruolo meno centrale nel velocizzare la risposta del PC all’utente. Di fatto i dischi SSD con la loro velocità r/w di gran lunga superiore ai vecchi HDD permettono l’esecuzione di software anche molto pesanti in minor tempo, rendendo superfluo un grande quantitativo di RAM (nella maggior parte dei casi).
Ok, il preambolo è stato senz’altro lunghissimo, ma devo dire che sono partito dall’invenzione della ruota per arrivare ai giorni nostri. Ora vediamo come aggiungere un file di SWAP al nostro sistema Linux con pochi semplici comandi.
Vediamo di capire prima di cominciare quanta memoria “volatile” è installata nel nostro sistema.
Con il comando free -h
abbiamo una panoramica della memoria sia fisica che virtuale installata sul nostro sistema. Nel nostro caso il totale della RAM è 15GB, mentre la SWAP è a 2GB.
~$ free -h total used free shared buff/cache available Mem: 15G 686M 14G 3,4M 802M 14G Swap: 2,0G 0B 2,0G
Creiamo un file di SWAP
Per prima cosa creiamo un file vuoto della dimensione di 500MB con dd
.
~$ sudo dd if=/dev/zero of=/swapfile1 bs=1M count=1024 1024+0 record dentro 1024+0 record fuori 1073741824 bytes (1,1 GB, 1,0 GiB) copied, 0,945685 s, 1,1 GB/s
Ho creato il file swapfile1
perché swapfile
lo sto già usando. E ora controlliamo che lo spazio allocato sia della corretta quantità.
~$ ls -lh /swapfile1
-rw-r--r-- 1 root root 1,0G giu 23 15:46 /swapfile1
Se controlliamo ora il quantitativo di SWAP del computer non troveremo traccia di questo ultimo file di SWAP da 1GB appena creato. Per renderlo “swappabile” diamo il seguente comando:
~$ sudo mkswap /swapfile1
mkswap: /swapfile1: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
nessuna etichetta, UUID=d6c75786-ac0e-4501-af27-44d21b6e65e0
Per ora ignoriamo il messaggio d’errore. Attiviamo il nuovo spazio di SWAP.
~$ sudo swapon /swapfile1
swapon: /swapfile1: insecure permissions 0644, 0600 suggested.
Cambiamo i permessi a /swapfile1
e li impostiamo come suggerito.
~$ sudo chmod 600 /swapfile1
Sarà stato davvero aggiunto spazio di SWAP al sistema? Controlliamo.
~$ free -h total used free shared buff/cache available Mem: 15G 688M 13G 3,4M 1,8G 14G Swap: 3,0G 0B 3,0G
Sembra di si.
2 commenti
Linuccio · 15 Novembre 2020 alle 10:15 AM
Buongiorno, ho usato queste istruzioni e funzionano fin a che spengo il pc. Ora ho 3 gb di swap. Lo riaccendo e ci sono 2 gb e non tre. Come faccio a rendere permanenti queste modifiche? Grazie
TheJoe · 15 Novembre 2020 alle 11:33 AM
Ciao.
Non dovrebbe succedere.
Se succede effettivamente ad ogni riavvio potresti creare uno script all’avvio della sessione.