Comment configurer swappiness?

345

J'ai besoin d'un moyen simple et facile, étape par étape, de configurer swappiness.

Un zéro
la source
17
Un paquebotsudo bash -c "echo 'vm.swappiness = 15' >> /etc/sysctl.conf"
redanimalwar
8
@redanimalwar vous devez également exécuter sudo sysctl -ppour charger la nouvelle valeur swappiness à partir du fichier sysctl.conf, sinon la modification ne s'appliquera qu'au redémarrage suivant.
waldyrious

Réponses:

510

Le noyau Linux fournit un paramètre ajustable qui contrôle la fréquence d'utilisation du fichier d'échange, appelée swappiness.

Un paramètre swappiness de zéro signifie que le disque sera évité sauf en cas d'absolue nécessité (mémoire insuffisante), tandis qu'un paramètre swappiness de 100 signifie que les programmes seront permutés presque instantanément sur le disque.

Le système Ubuntu est livré avec un défaut de 60, ce qui signifie que le fichier d'échange sera utilisé assez souvent si l'utilisation de la mémoire est d'environ la moitié de la RAM. Vous pouvez vérifier la valeur de swappiness de votre propre système en exécutant:

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

Comme je dispose de 4 Go de RAM, j'aimerais ramener ce chiffre à 10 ou 15. Le fichier d'échange ne sera alors utilisé que lorsque mon utilisation de RAM est d'environ 80 ou 90 %. Pour modifier la valeur de swappiness du système, ouvrez-le en /etc/sysctl.conftant que root . Ensuite, modifiez ou ajoutez cette ligne au fichier:

vm.swappiness = 10

Redémarrez pour que le changement prenne effet.

Vous pouvez également modifier la valeur pendant que votre système est toujours en cours d'exécution avec:

sysctl vm.swappiness=10

Vous pouvez également effacer votre échange en exécutant swapoff -apuis en swapon -atant que root au lieu de redémarrer pour obtenir le même effet.

Pour calculer votre formule d'échange:

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

le total est donc 3950/100 = 39,5 * 10 = 395

Cela signifie donc que lorsqu'il reste 10% (395 Mo) de RAM, il commence à utiliser le swap.


                                          Aidez-moi . Ubuntu. Échanger

                                           Quel est swappiness

Le paramètre swappiness contrôle la tendance du noyau à déplacer les processus de la mémoire physique vers le disque de swap. Les disques étant beaucoup plus lents que la RAM, les temps de réponse du système et des applications peuvent être plus lents si les processus sont déplacés de manière trop agressive en dehors de la mémoire.

  • swappiness peut avoir une valeur comprise entre 0 et 100.
  • swappiness=0:
    • Noyau version 3.5 et plus récente: désactive swapiness.
    • Version du noyau antérieure à 3.5: évite que les processus ne soient plus utilisés hors de la mémoire physique le plus longtemps possible.
  • swappiness=1:
    • Noyau version 3.5 et plus: swappiness minimum sans le désactiver complètement.
  • swappiness=100:
    • Indique au noyau d'échanger agressivement des processus en dehors de la mémoire physique et de les déplacer vers le cache d'échange.

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

Le réglage par défaut dans Ubuntu est swappiness=60. Réduire la valeur par défaut de swappiness améliorera probablement les performances globales pour une installation de bureau Ubuntu typique. Une valeur de swappiness=10est recommandée, mais n'hésitez pas à expérimenter.


Exemple

Commencé à utiliser swap à 91% :

entrez la description de l'image ici Comme j'ai configuré mon système & vm pour utiliser la RAM à 90% , à 90%, il n'y avait pas d'échange.

Après cela, j'ai ouvert des applications comme Firefox & Shutter, et l'échange a commencé parce que l'utilisation de la RAM est supérieure à 90% .

Un zéro
la source
118
Un swappiness de 100 ne permet pas de permuter les programmes immédiatement, ni une valeur de 60 ou 90 signifie que swap est utilisé lorsque le bélier est plein à 60 ou 90%. Il s'agit d'un ratio de préférence pour le vol de pages en cache par rapport à l'échange de choses pour libérer de la mémoire lorsqu'il n'y en a pas assez. Une valeur faible préférera fortement voler des pages du cache et une valeur élevée préfère fortement essayer d’échanger des pages. Le paramètre n'a d'effet que lorsque la mémoire est (presque) entièrement utilisée, et le noyau doit choisir comment en libérer.
Psusi
67
Vous devez indiquer que la RAM non occupée par les programmes en cours est utilisée en tant que cache sur disque ... par conséquent, en diminuant la rapidité d'utilisation, vous augmentez les chances qu'un programme ne soit pas remplacé, tout en diminuant la taille. du cache disque, ce qui peut ralentir l’accès au disque. Les effets de ce paramètre sur les performances réelles ne sont donc pas aussi simples… vous pouvez expérimenter, mais je suppose que les valeurs par défaut sont définies par des personnes qui comprennent suffisamment le sujet :)
Sergey
14
@Sergey et l’ironie de la chose, c’est que ceux qui disposent de peu de RAM ont toutes les chances d’essayer toutes les astuces possibles pour améliorer leurs performances et sont plus susceptibles d’être les personnes pour lesquelles 60 ans ou même plus serait le meilleur chiffre. Ceux d'entre nous qui le fixons à 10 parce que nous avons des tonnes de RAM ne gagnent pas autant qu'ils perdront s'ils le font.
Jon Hanna
6
@Freedom_Ben: Voir linuxatemyram.com :)
Sergey
5
Je laisse juste une discussion similaire ici - unix.stackexchange.com/questions/88693/…
Elijah Lynn