Cos’è Swappiness?
swappiness indica il valore in percentuale rimasto sulla RAM prima di usare il file di swap. Swappiness è un parametro del kernel Linux che controlla il peso relativo dato allo swapping della memoria runtime, in contrapposizione all’eliminazione delle pagine dalla cache delle pagine di sistema. Swappiness può essere impostato su valori compresi tra 0 e 100 inclusi.
Swappiness controlla quanto sia assertivo il meccanismo di swapping. Lo swapping sposta le pagine di memoria inattive dalla memoria fisica alla memoria di swap su un disco (in un file di swap o in una partizione di swap). Il processo mira a bilanciare i dati nella RAM e utilizza lo spazio di swap quando la memoria fisica raggiunge i suoi limiti.
Il valore di swappiness è un numero compreso tra 0 e 200. Valori più bassi indicano uno swapping minore, mentre valori più alti indicano uno swapping aggressivo. Quando la memoria fisica è bassa, il valore di swappiness indirizza la decisione del kernel per lo swapping delle pagine.
I candidati ideali per lo swapping sono le pagine inattive o a cui si accede raramente. Il processo libera spazio RAM, dando priorità ai processi più attivi.
Il parametro swappiness influenza il modo in cui avviene lo swap e l’utilizzo dello spazio di swap. Quando i processi effettuano lo swap fuori dalla RAM, si spostano nello spazio di swap. Lo spazio è un’estensione della memoria fisica e aiuta a liberare spazio nella RAM. Lo spazio di swap ha una dimensione specifica e determina la quantità di dati che un sistema può scambiare. Una volta che i processi nella RAM sono completi e liberano memoria, i processi scambiati tornano nella RAM. La swappabilità non controlla la dimensione dello spazio di swap, ma influenza invece i limiti e la frequenza dello swapping.
La scelta del miglior valore di swappiness dipende da molti fattori diversi, come:
Valori di swappiness più bassi danno priorità al mantenimento dei dati nella RAM. Scegli un valore più basso per i sistemi che hanno abbondante memoria fisica. Ridurre al minimo la frequenza di swapping riduce la frequenza delle operazioni di I/O del disco. In questo caso, un valore di swappiness più basso è vantaggioso.
D’altro canto, valori di swappiness più alti determinano uno swapping assertivo. I sistemi con memoria fisica limitata e carichi di lavoro che trovano vantaggioso lo swapping frequente traggono vantaggio da valori di swappiness più alti. La procedura assicura che lo spazio RAM si liberi frequentemente per i processi attivi.
Poiché swappiness determina il rapporto di swapping tra pagine file-backed e pagine anonime, il numero determina un compromesso tra le due. Quando swappiness è massimo, le pagine anonime e file-backed hanno le stesse priorità di swapping, mentre quando swappiness è 0, le pagine file-backed ottengono la priorità.
La tabella seguente fornisce esempi di valori di swappiness e del loro effetto:
Valore di swappiness | Effetto swappiness |
---|---|
0 | Il valore indica al kernel di evitare il più possibile la situazione di swap. |
10-50 | Il valore indica al kernel di essere leggermente aggressivo nello scambio di pagine di memoria. |
50-100 | Il valore indica al kernel di essere moderatamente aggressivo nello scambio di pagine di memoria. |
>100 | Valori più alti indicano al kernel di essere molto aggressivo nello scambio di pagine di memoria. |
Monitora le prestazioni del sistema, l’uso della memoria e le modifiche incrementali per determinare il miglior valore di swap per l’impostazione specifica. La modifica dello swap non richiede un riavvio del sistema.
Ci sono due modi per controllare il valore di swappiness su un sistema Linux. Entrambi i metodi richiedono l’accesso al terminale e forniscono le stesse informazioni sul valore di swappiness corrente.
Utilizzare il comando cat per controllare il contenuto del file /proc/sys/vm/swappiness. Immettere quanto segue nel terminale:
cat /proc/sys/vm/swappiness
L’output mostra un numero compreso tra 0 e 200.
In alternativa, utilizzare il comando sysctl per controllare il vm.swappiness
valore del parametro:
sysctl vm.swappiness
L’output mostra vm.swappiness=[valore]
, dove [valore]
è un numero compreso tra 0 e 200.
Per cambiare il valore di swappiness su un sistema Linux sono necessari privilegi di amministratore. I passaggi variano a seconda che la modifica sia temporanea o che il valore persista dopo il riavvio.
Per modificare temporaneamente la swappiness, impostare vm.swappiness
il valore desiderato con quanto segue:
sudo sysctl vm.swappiness=[valore]
In alternativa, per far sì che le modifiche persistano dopo il riavvio, aprire il file /etc/sysctl.conf utilizzando un editor di testo:
sudo nano /etc/sysctl.conf
Aggiungere il valore come segue:
vm.swappiness = [valore]
Salvare il file e chiudi.
Dopo aver letto questa guida, saprai cos’è il valore di swappiness, come funziona e come regolarlo. La messa a punto precisa di swappiness in Linux può migliorare le prestazioni del sistema. Tuttavia, il compito non è semplice e richiede tentativi ed errori.