Le paramètre de permutation est un ajustement de la façon dont Linux calcule les avantages / inconvénients de la permutation dans un scénario particulier. Un swappiness élevé n'entraînera pas le système à permuter quand il n'en a pas besoin, et un swappiness faible, à condition que vous ne désactiviez pas complètement le swap, n'empêchera pas votre système de permuter quand il le doit absolument.
La permutation par défaut de 60 environ est un très bon compromis garantissant de bonnes performances de votre système en veillant à ce qu'il ne soit pas trop difficile d'allouer de la mémoire cache alors qu'il y a de la mémoire de programme allouée inutilisée.
N'oubliez pas que si vous disposez de suffisamment de RAM pour tous vos processus, plus le cache, ce qui devrait généralement être le cas si vous disposez de suffisamment de RAM physique, l'échange ne devrait pas être un problème pour vous de toute façon. La meilleure façon de résoudre les problèmes de permutation excessive est de réduire l'utilisation de la RAM par les processus et / ou d'augmenter la RAM physique. La réduction de la permutation aura un effet négatif si vous avez vraiment besoin de plus de RAM.
Pourquoi la plupart des gens recommandent de réduire le swappiness à 10-20?
Parce que la plupart croient que l'échange = mauvais et que si vous ne réduisez pas l'échange, le système procédera à l'échange quand il n'en aura vraiment pas besoin. Ni l'un ni l'autre n'est vraiment vrai. Les gens associent l'échange à des moments où leur système s'embourbe - cependant, c'est surtout l'échange parce que le système s'enlise, et non l'inverse. Il est vrai qu'il y a certains moments où l'échange peut avoir une pénalité de performance notable, mais le système aura déjà pris en compte cela dans sa décision de permuter et décidé que ne pas le faire aurait une plus grande pénalité globale en termes de performances ou de stabilité du système, ce qui peut devenir plus tard perceptible. Dans l'ensemble, les paramètres par défaut devraient se traduire par les meilleures performances et fiabilité globales. Je recommanderais de le laisser par défaut.
...
Une fois que vous avez utilisé suffisamment de mémoire pour qu'il ne reste plus assez de mémoire cache pour un bon fonctionnement, Linux peut réallouer de la mémoire d'application inutilisée de la RAM à permuter.
Cependant, il ne le fait pas selon une coupure définitive. Ce n'est pas comme si vous atteigniez un certain pourcentage d'allocation, puis Linux commence à échanger. Il a un algorithme plutôt "flou". Il prend en compte beaucoup de choses, ce qui peut être décrit au mieux par "la pression exercée sur l'allocation de mémoire". S'il y a beaucoup de «pression» pour allouer de la nouvelle mémoire, cela augmentera les chances que certains soient échangés pour faire plus de place. S'il y a moins de «pression», cela réduira ces chances.
Votre système dispose d'un paramètre de "permutation" qui vous aide à modifier la façon dont cette "pression" est calculée. Il n'est normalement pas recommandé de modifier cela du tout, et je ne vous recommanderais certainement jamais de le modifier. L'échange est dans l'ensemble une très bonne chose - toute pénalité de performance occasionnelle est destinée à être compensée par un gain de réactivité et de stabilité globales du système pour un large éventail de tâches. Si vous réduisez le swappiness, vous laissez la quantité de mémoire cache rétrécir un peu plus qu'elle ne le ferait autrement, même si cela peut vraiment être utile. Vous risquez donc de ralentir votre ordinateur en général, car il y a moins de cache, tandis que la mémoire est occupée par des applications qui ne l'utilisent même pas. C'est à vous de décider si c'est un bon compromis pour tout problème spécifique que vous rencontrez avec l'échange.
Que se passe-t-il lorsque le système est enlisé et qu'il change de façon importante?
La plupart du temps, les gens vont regarder leur système qui écrase le disque et utilise beaucoup d'espace de swap et blâmer le swapping pour cela. C'est la mauvaise approche à adopter. Si le swapping atteint cet extrême, cela signifie que votre système est extrêmement faible en mémoire et le swapping est la seule chose qui l'empêche de planter ou de tuer des processus au hasard. Sans échange, dans cette situation, les processus se bloqueront et mourront. L'échange est le symptôme d'un problème plus profond. Dans un système disposant de suffisamment de mémoire pour toutes ses tâches, l'échange garantit uniquement que la mémoire est utilisée de manière efficace, distribuant la mémoire au cache via des processus dormants où il voit que cela en vaut la peine. Dans un système où l'échange est sans cesse en train de battre le disque, ce n'est pas la faute de l'échange.
Lors du choix de ce qui doit être échangé sur le disque, le système essaie de choisir la mémoire qui n'est pas réellement utilisée - lecture ou écriture. Il a un algorithme assez simple pour le calculer qui choisit bien la plupart du temps.
...
Mais comment l'échange peut-il accélérer mon système? L'échange ne ralentit-il pas les choses?
Le transfert de données de la RAM vers le swap est une opération lente, mais elle n'est effectuée que lorsque le noyau est pratiquement sûr que l'avantage global l'emportera sur cela. Par exemple, si la mémoire de votre application a augmenté au point qu'il ne reste presque plus de cache et que vos E / S sont très inefficaces à cause de cela, vous pouvez réellement obtenir beaucoup plus de vitesse de votre système en libérant de la mémoire, même après les dépenses initiales de l'échange de données afin de les libérer.