Comment configurer la permutation dans Linux Memory Management?

11

Le paramètre swappiness contrôle la tendance du noyau à déplacer les processus de la mémoire physique vers le disque d'échange. Quel est le paramètre par défaut et comment le configurer pour améliorer les performances globales ?

GAD3R
la source
3
Après avoir changé le swappiness, j'ai trouvé utile de vider le swap avec swapoff -apour recommencer. serverfault.com/a/354384/203035
Nemo

Réponses:

10

Le noyau Linux fournit un paramètre modifiable qui contrôle la permutation

$ cat /proc/sys/vm/swappiness
60  

ouvrir en /etc/sysctl.conftant que root. Ensuite, modifiez ou ajoutez cette ligne au fichier:

vm.swappiness = 10

pour modifier temporairement la valeur de swappiness, essayez cette commande:

$ echo 50 > /proc/sys/vm/swappiness
Bâtard
la source
1
Comment répond-il "comment configurer cela pour améliorer les performances globales?"
techraf
L'échange est nécessaire lorsque la performance de votre système est lente, car cela arrive parfois lorsque vous manquez de RAM utilisable, ce qui aurait ralenti votre système (peut-être même des applications bloquées) même si vous n'aviez pas échangé. Donc, pour simplifier les choses, l'échange se produit parce que votre système est enlisé, plutôt que l'inverse - et dans certains cas, il peut sauver la journée.
Mongrel
2
N'avez-vous pas également besoin sudo sysctl -p /etc/sysctl.confque les modifications prennent effet?
pkaramol
11

De Swappiness, Wikipedia

Vous pouvez définir cette valeur dans un fichier virtuel/proc/sys/vm/swappiness La valeur mentionnée décidera de la façon dont l'espace de swap doit être utilisé, voici les valeurs avec leurs intentions.

vm.swappiness = 0   # Swap is disabled. In earlier versions, this meant that the kernel would swap only to avoid an out of memory condition, but in later versions this is achieved by setting to 1.
vm.swappiness = 1   # Kernel version 3.5 and over, as well as kernel version 2.6.32-303 and over: Minimum amount of swapping without disabling it entirely.
vm.swappiness = 10  # This value is sometimes recommended to improve performance when sufficient memory exists in a system, this value *10* could be considered for the performance being expected. 
vm.swappiness = 60  # The default value.
vm.swappiness = 100 # The kernel will swap aggressively.

Bien que cela dépende également du besoin, si la mémoire physique disponible est suffisante, il peut ne pas y avoir un grand besoin d'espace d'échange, selon Layman, il ne sera pas nécessaire de changer la valeur par défaut de 60.

Keyshov Borate
la source
@techraf a mis à jour la réponse.
Keyshov Borate
1
Dans les machines virtuelles, je conseille néanmoins de le remplacer par 10 au cas où.
Rui F Ribeiro
2

Dans RedHat / CentOS, la valeur par défaut est 60.
"Afin d'améliorer les performances" est un terme très large. Quelles performances essayez-vous d'améliorer?

Avez-vous des problèmes de mémoire insuffisante?
Est-ce que votre système SWAP quand il y a encore de la mémoire disponible / de la mémoire cache?

Sous Linux, RAM libre = RAM gaspillée, donc presque toute la mémoire libre est utilisée pour les caches de disque.
Il y a des cas avec swappiness = 60 où les pages en mémoire sont déplacées vers SWAP si elles n'ont pas été consultées pendant des périodes prolongées, peu importe que vous ayez de la RAM non allouée.
Déplacer certaines pages de mémoire vers SWAP n'est pas nécessairement une mauvaise chose.

Veuillez éclairer davantage votre problème pour une réponse plus détaillée.

fireto
la source