Pourquoi la permutation par défaut est-elle 60? Quel serait l'effet si je réduisais la valeur d'échange pour mon ordinateur de bureau?

16

Je lisais sur le swappiness dans divers forums et j'ai vu des vidéos. Beaucoup ont déclaré que c'était une bonne chose pour les utilisateurs de bureau de réduire la valeur de swappiness en dessous de 60 (qui est la valeur par défaut). Certains ont déclaré que 60 est bon pour les serveurs. Exactement pourquoi serait-il préférable pour moi de l'abaisser et pourquoi 60 est bon pour les serveurs? J'ai essayé de chercher une réponse (j'ai regardé ici par exemple) mais je n'ai pas pu comprendre. ... Veuillez utiliser des termes simples: D

Mina Michael
la source
édité la question. C'est bon maintenant?
Mina Michael

Réponses:

22

Votre prémisse est fausse. Il n'y a pas de valeur d'échange pour les serveurs.

Le swapiness est la quantité de swaps qui est effectuée, en particulier avec quelle agressivité vous échangez. Pour mes serveurs, le swappiness est proche de zéro, car je fais en sorte qu'ils aient suffisamment de mémoire pour tout. Il n'y a pas de valeur «optimale pour les serveurs». il y en a 60, qui est la valeur par défaut, puis il y a «votre valeur» qui dépend de l'utilisation et de la mémoire disponible.

Si vous avez des serveurs qui utilisent parfois des CHARGES de mémoire, vous pourriez les avoir plus haut que par défaut, mais je dirais que certains serveurs (serveurs de base de données?) Voudront peut-être les garder bien plus bas qu'un ordinateur domestique.

Nanne
la source
bien d'accord: DI suivait ce unix.stackexchange.com/questions/88693/… . la deuxième réponse (celle avec actuellement 2 votes positifs) indique que 60 peut être le plus approprié pour les serveurs. ... Et permettez-moi de clarifier les choses. Je devrais définir une permutabilité élevée si je fais des processus qui nécessitent une grande mémoire et des faibles si je fais plusieurs petits processus?
Mina Michael
(et en fonction des spécifications de mon ordinateur bien sûr) J'ai un duo core 2 d'environ 2,9 GHz avec des graphiques intégrés Intel d'ailleurs
Mina Michael
1
Impossible à dire. Cela dépend de beaucoup de choses, comme indiqué également dans cette réponse -> certaines bases de données peuvent faire leur propre mise en cache, mais d'autres pas. Cela dépend des programmes et de votre matériel. Il existe une valeur par défaut et la meilleure chose à faire est de tester les performances de votre système dans quelle situation. Comme dit, j'ai ajouté suffisamment de mem à mes systèmes, et je sais ce dont ils ont besoin, donc je peux avoir un swappiness à près de 0. Mais sur des systèmes sains, un échange peut être une bonne chose. il n'y a pas ici de conseil d'installation simple «dieu pour tous», lisez la réponse la mieux notée. Aussi: il dit "peut être", pas "est" dans cette 2ème réponse
Nanne
(et selon vos spécifications: la chose la plus importante si vous parlez de la mémoire que vous avez et vous, mais pas besoin de l'ajouter ici: nous pourrions parler pendant des jours de toutes sortes de détails, la meilleure chose à faire est de lire le réponse la plus élevée sur ce lien Unix que vous avez donné, et continuez à tester son fonctionnement dans votre environnement.) '
Nanne
eh bien c'est quand j'ai dit que je ne pouvais pas comprendre ce que j'avais lu. Je suis assez faible en connaissances (et même en langage pour être honnête XD) ... donc j'ai juste besoin d'essayer! ok merci: D
Mina Michael
8

La valeur de swappiness est mise à l'échelle d'une manière qui confond les gens. Ils voient qu'il a une plage de 0 à 100, alors ils pensent au pourcentage, alors que le minimum effectif est d'environ 50.

60 signifie à peu près ne pas échanger avant d'avoir atteint environ 80% d'utilisation de la mémoire, laissant 20% pour le cache et autres. 50 signifie attendre que nous manquions de mémoire. Des valeurs plus faibles signifient la même chose, mais avec une agressivité croissante en essayant de libérer la mémoire par d'autres moyens.

Le décrivent assez bien à http://lwn.net/Articles/83588/

David
la source
Que signifient des valeurs plus élevées, par exemple 80 ou 100?
jocull
5

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.

Veuillez voir la réponse que j'ai écrite à une question très similaire:

/ubuntu//a/184221/54256

Extrait:

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.

N'hésitez pas à lire l'intégralité de l'article sur /ubuntu//a/184221/54256

thomasrutter
la source
0

La swappiness contredit complètement toutes ces réponses.

Le véritable fonctionnement de la permutation est décrit dans l'article: https://gokulvasanblog.wordpress.com/2016/11/14/empathising-mammoths-mentality-a-study-on-linux-memory-management/

L'ambiguïté est corroborée par la déclaration d'Andrew Morton: https://lwn.net/Articles/83593/

Je vais mettre mes doigts dans mes oreilles et chanter "la la la" jusqu'à ce que les gens me disent "J'ai mis la permutabilité à zéro et ça n'a pas fait ce que je voulais".

J'espère que c'est utile

user3624410
la source
1
Bienvenue à AU. Pourriez-vous résumer les points clés de l'article que vous pointez et expliquer comment il répond à la question, qui n'est pas d'expliquer ce qu'est la permutabilité ou non.
Marc Vanhoomissen