Come configuro lo swappiness?


345

Ho bisogno di un modo passo-passo, semplice e facile per configurare la swappiness.


17
One linersudo bash -c "echo 'vm.swappiness = 15' >> /etc/sysctl.conf"
redanimalwar

8
@redanimalwar è inoltre necessario eseguire sudo sysctl -pper caricare il nuovo valore di swappiness dal file sysctl.conf, altrimenti la modifica si applica solo al riavvio successivo.
waldyrious

Risposte:


510

Il kernel di Linux fornisce un'impostazione modificabile che controlla la frequenza con cui viene utilizzato il file di scambio, chiamato swappiness.

Un'impostazione di swapiness pari a zero significa che il disco verrà evitato a meno che non sia assolutamente necessario (si esaurisce la memoria), mentre un'impostazione di swapiness su 100 significa che i programmi verranno scambiati sul disco quasi istantaneamente.

Il sistema Ubuntu ha un valore predefinito di 60, il che significa che il file di scambio verrà usato abbastanza spesso se l'utilizzo della memoria è circa la metà della mia RAM. Puoi controllare il valore di swapiness del tuo sistema eseguendo:

one@onezero:~$ cat /proc/sys/vm/swappiness
60

Dato che ho 4 GB di RAM, vorrei ridurlo a 10 o 15. Il file di scambio verrà quindi utilizzato solo quando il mio utilizzo della RAM è di circa l' 80 o il 90 percento. Per modificare il valore di scambio del sistema, aprire /etc/sysctl.confcome root . Quindi, modifica o aggiungi questa riga al file:

vm.swappiness = 10

Riavviare per rendere effettive le modifiche.

Puoi anche modificare il valore mentre il tuo sistema è ancora in esecuzione con:

sysctl vm.swappiness=10

Puoi anche cancellare lo swap eseguendo swapoff -ae quindi swapon -acome root invece di riavviare per ottenere lo stesso effetto.

Per calcolare la formula di scambio:

free -m (total) / 100 = A

A * 10

root@onezero:/home/one# free -m
             total       used       free     shared    buffers     cached
Mem:          3950       2262       1687          0        407        952
-/+ buffers/cache:        903       3047
Swap:         1953          0       1953

quindi il totale è 3950/100 = 39.5 * 10 = 395

Quindi, ciò significa che quando rimane il 10% (395 MB) di RAM, inizierà a utilizzare lo swap.


                                          Aiuto . Ubuntu. Scambiare

                                           Cos'è la swappiness

Il parametro swappiness controlla la tendenza del kernel a spostare i processi dalla memoria fisica al disco di swap. Poiché i dischi sono molto più lenti della RAM, ciò può portare a tempi di risposta più lenti per il sistema e le applicazioni se i processi vengono spostati troppo aggressivamente dalla memoria.

  • swappiness può avere un valore compreso tra 0 e 100.
  • swappiness=0:
    • Kernel versione 3.5 e successive: disabilita la swapiness.
    • Versione del kernel precedente alla 3.5: evita di scambiare i processi dalla memoria fisica il più a lungo possibile.
  • swappiness=1:
    • Kernel versione 3.5 e successive: minima swappiness senza disabilitarla del tutto.
  • swappiness=100:
    • Indica al kernel di scambiare in modo aggressivo i processi dalla memoria fisica e di spostarli nella cache di scambio.

Vedi http://en.wikipedia.org/wiki/Swappiness .

L'impostazione predefinita in Ubuntu è swappiness=60. Ridurre il valore predefinito di swappiness probabilmente migliorerà le prestazioni complessive per una tipica installazione desktop Ubuntu. Si swappiness=10consiglia un valore di , ma sentiti libero di sperimentare.


Esempio

Iniziato a utilizzare lo swap al 91% :

inserisci qui la descrizione dell'immagine Poiché ho configurato il mio sistema e VM per utilizzare la RAM al 90% , al 90% non è stato effettuato alcuno scambio.

Successivamente ho aperto alcune applicazioni come Firefox e Shutter e ho iniziato a scambiare perché l'utilizzo della RAM è superiore al 90% .


118
Lo swap di 100 non fa sì che i programmi vengano scambiati immediatamente, né un valore di 60 o 90 significa che lo swap viene utilizzato quando ram è pieno al 60 o al 90%. È un rapporto di preferenza per rubare le pagine dalla cache rispetto allo scambio di cose per liberare un po 'di memoria quando non c'è abbastanza. Un valore basso preferirà fortemente rubare pagine dalla cache e un valore elevato preferisce fortemente provare a scambiare pagine. L'impostazione ha effetto solo quando la memoria è (quasi) tutta usata e il kernel deve scegliere come liberarne un po '.
psusi,

67
È necessario sottolineare che la RAM NON occupata dai programmi in esecuzione viene utilizzata come cache del disco ... quindi, diminuendo lo swappiness, si aumenta la possibilità che un programma non venga scambiato, ma allo stesso tempo si riduca la dimensione della cache del disco, che può rallentare l'accesso al disco. Quindi gli effetti di questa impostazione sull'esecuzione effettiva non sono così semplici ... sei il benvenuto, ovviamente, a sperimentare, ma sospetto che le impostazioni predefinite siano impostate da persone che comprendono abbastanza nell'argomento :)
Sergey,

14
@Sergey e l'ironia di ciò è che quelli con una piccola RAM hanno maggiori probabilità di provare tutti i trucchi che possono imbattersi per migliorare le prestazioni e hanno maggiori probabilità di essere le persone per le quali 60 o anche più sarebbe la cifra migliore. Quelli di noi che lo impostano su 10 perché tonnellate di RAM non stanno guadagnando tanto quanto perderanno se lo fanno.
Jon Hanna,

6
@Freedom_Ben: vedi linuxatemyram.com :)
Sergey

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.