Pourquoi la plupart des gens recommandent-ils de réduire le swappiness à 10-20?

51

J'ai vu sur plusieurs sites recommander de réduire le swappiness à 10-20 pour de meilleures performances.

Est-ce un mythe ou non? Est-ce une règle générale? J'ai un ordinateur portable avec 4 Go de RAM et un disque dur SSD de 128 Go, quelle valeur recommandez-vous pour mon swappiness?

Merci.

    
posée Saeed Zarinfam 05.09.2012 - 07:02
la source

6 réponses

80

Parce que la plupart des gens croient que l’échange = mauvais et que si vous ne réduisez pas le swappiness, le système échangera quand ce n’est pas nécessaire. Ni l'un ni l'autre n'est vraiment vrai. Les gens associent l'échange à des moments où leur système s'enlise - cependant, ils échangent surtout parce que le système s'enlise, et non l'inverse. Lorsque le système échange, il aura déjà pris en compte le coût de la performance dans sa décision d’échanger, et a décidé que ne pas le faire entraînerait une pénalisation globale plus importante des performances ou de la stabilité du système, qui deviendrait plus tard évidente.

Dans l’ensemble, les paramètres par défaut se traduisent par de bonnes performances et une bonne stabilité. Je recommande de le laisser à la valeur par défaut. Des améliorations pourraient être apportées au fonctionnement du swap sur les systèmes de bureau / interactifs, mais dans l’ensemble, le contrôle de permutation n’est pas la meilleure solution: ajustez-le dans une direction et corrigez un problème et créez d’autres problèmes. Ce n'est rien en comparaison de la simple installation de plus de mémoire vive.

Comment Linux utilise la RAM

Toute mémoire vive non utilisée par les applications peut être utilisée comme "cache". Le cache est important pour un système rapide et fluide, accélérant les lectures et les écritures sur le disque.

Si vos applications augmentent leur utilisation de la mémoire au point d’utiliser la quasi-totalité de votre mémoire vive, votre cache diminuera et, en moyenne, les opérations sur disque ralentiront.

Si les applications augmentent encore leur utilisation de la mémoire - en supposant que vous n’ayez pas d’espace de swap - vous finirez par manquer de mémoire et votre système devra tuer les processus. Tuer des processus est pire qu'un ralentissement car il entraîne une instabilité.

Comment Linux utilise le swap

Pour lutter contre ces deux problèmes, votre système peut réaffecter de la mémoire d’application rarement utilisée à l’espace de swap de votre disque, libérant ainsi davantage de mémoire vive. Cela peut empêcher les processus de mourir en raison d’un manque de mémoire et de récupérer un peu de mémoire cache pour que les opérations sur disque puissent s’effectuer sans problème.

Cette ré-allocation n'est pas faite selon une coupure définitive. Vous n'atteignez pas un certain pourcentage d'allocation puis Linux commence à échanger. Il a un algorithme "flou". Cela prend beaucoup de choses en compte, ce qui peut être mieux décrit par "combien de pression existe pour l’allocation de mémoire". S'il y a beaucoup de "pression" pour allouer de la mémoire, cela augmentera les chances que certains soient échangés pour gagner de la place. S'il y a moins de "pression", cela diminuera ces chances.

Votre système a un paramètre "swappiness" qui vous aide à modifier la façon dont cette "pression" est calculée. Il n'est normalement pas recommandé de modifier cela du tout. L'échange est globalement une très bonne chose: toute pénalité de performance occasionnelle doit être compensée par un gain de réactivité et de stabilité globale du système pour un large éventail de tâches. Si vous réduisez le swappiness, vous laissez la quantité de mémoire cache se réduire un peu plus qu'elle ne le ferait autrement, même si cela peut être vraiment utile. Vous risquez donc de ralentir votre ordinateur dans son ensemble. Si vous allez jusqu'à désactiver complètement le swap, vous risquez de perdre les processus en raison de l'impossibilité d'allouer de la mémoire.

Que se passe-t-il lorsque le système s’embourbe et que l’échange est lourd?

La permutation est une opération lente et coûteuse. Le système l’évite à moins qu’il ne calcule que le compromis entre les performances du cache compensera globalement ou s’il est nécessaire d’éviter les processus de mise à mort.

La plupart du temps, les gens regardent leur système graver le disque dur et utilisent beaucoup d'espace de swap et de transfert de responsabilité. C'est la mauvaise approche à prendre. Si le swapping atteint un tel niveau, cela signifie que le swapping est la tentative de votre système pour gérer les problèmes de mémoire faible, et non la cause du problème.

Qu'en est-il des systèmes de bureau? Ne nécessitent-ils pas une approche différente?

Les utilisateurs d'un ordinateur de bureau s'attendent effectivement à ce que le système réponde aux actions initiées par l'utilisateur, telles que l'ouverture d'une application, ce qui peut parfois déclencher un échange en raison de l'augmentation de la mémoire requise. .

Une des façons d’essayer de régler ceci est de réduire le paramètre swappiness, ce qui peut augmenter la tolérance du système aux applications utilisant de la mémoire et n’ayant pas suffisamment de place dans le cache.

Cependant, dans une certaine mesure, il ne s'agit que de changer les règles du but. L'application peut maintenant charger sans une opération de swap, mais cela laissera moins de marge pour la prochaine application chargée. Le même échange peut se produire plus tard, lorsque vous ouvrez ensuite une application à la place. En attendant, les performances du système sont légèrement inférieures en raison de la taille réduite du cache. Ainsi, tout avantage du paramètre de permutation réduite peut être difficile à mesurer, réduisant le délai de permutation à certains moments, mais entraînant d'autres performances lentes à d'autres moments.Réduire un peu le swappiness peut être justifié si vous savez ce que vous faites, mais le réduire à 10% devrait être fait avec prudence, car cela peut laisser le système tolérant à des tailles de cache très faibles et laisser le système plus vulnérable. échanger à court terme.

La désactivation complète du swap doit être évitée car vous perdez la protection supplémentaire contre les conditions de mémoire insuffisante, ce qui peut entraîner le blocage ou la mise à mort des processus.

Le moyen le plus efficace de loin est d’installer plus de RAM si vous pouvez vous le permettre.

Le swap peut-il être désactivé sur un système disposant de beaucoup de RAM?

Si vous avez beaucoup plus de RAM que vous n’en aurez probablement besoin pour les applications, vous aurez rarement besoin de l’échange. Désactiver le swap ne fera probablement pas la différence la plupart du temps. Mais si vous avez suffisamment de mémoire vive, laisser le swap activé n’aura aucune pénalité car le système n’échange pas lorsque cela n’est pas nécessaire.

Les seules situations dans lesquelles il ferait une différence seraient dans la situation improbable où le système se trouve à court de mémoire et par conséquent, le système de cache est entravé et se trouve dans ce type de situation où vous voudriez vouloir échanger le plus. Ainsi, vous pouvez laisser en toute sécurité les paramètres normaux pour une plus grande tranquillité d’esprit sans effet négatif lorsque vous avez suffisamment de mémoire.

Comment échanger rapidement mon système? L'échange ne ralentit pas les choses?

Le transfert de données de la mémoire RAM à l’échange est une opération lente, mais elle n’est prise que lorsque le noyau est certain que l’avantage général de conserver une taille de cache raisonnable le dépassera.

Une fois que les données sont en échange, à quel moment s’en sort-il?

Une partie quelconque de la mémoire sera libérée du swap dès qu’elle sera utilisée - à lire ou à écrire. Cependant, la mémoire échangée est généralement une mémoire qui n’a pas été accédée depuis longtemps et dont on ne prévoit pas qu’elle sera bientôt utilisée.

Transférer des données en dehors du swap prend à peu près autant de temps que de les y insérer. Votre noyau ne supprimera pas les données s'il n'en a pas besoin. Alors que les données sont en échange et ne sont pas utilisées, cela laisse plus de mémoire pour les autres éléments utilisés , et plus de cache système.

    
réponse donnée thomasrutter 05.09.2012 - 07:24
la source
11

Sur un bureau habituel, vous disposez de 4 à 5 tâches actives qui consomment 50 à 60% de la mémoire. Si vous définissez le swappiness à 60, environ 1 / 4-1 / 3 des pages de tâche ACTIVE seront supprimées. Cela signifie que pour chaque changement de tâche, pour chaque nouvel onglet ouvert, il y aura un processus de permutation pour chaque exécution JS.

La solution consiste à définir swappiness à 10. Grâce à des observations pratiques, le système abandonne le cache du disque io (qui ne joue aucun rôle sur le bureau, car le cache en lecture / écriture n’est pratiquement pas utilisé). copier constamment de gros fichiers) au lieu de pousser quoi que ce soit dans le swap. En pratique, cela signifie que le système refusera d’échanger des pages, réduisant le cache io à la place, à moins qu’il n’atteigne 90% de la mémoire utilisée. Et cela signifie une expérience de bureau rapide, sans heurts et rapide.

Cependant, sur le serveur de fichiers, je définirais swappiness à 60, voire plus, car le serveur n’a pas d’importantes tâches de premier plan actives à conserver dans la mémoire, mais plutôt de nombreux processus plus petits qui fonctionnent ou dormir, et ne pas changer leur état immédiatement. Au lieu de cela, le serveur sert souvent (pardon) exactement les mêmes données aux clients, ce qui rend les caches de disque beaucoup plus précieux. Ainsi, sur le serveur, il est préférable de remplacer les processus inactifs, libérant ainsi de l’espace mémoire pour les requêtes de cache disque.

Sur les ordinateurs de bureau, cependant, ce paramètre précis permet de remplacer les blocs de mémoire des applications REAL, qui modifient ou accèdent constamment à ces données.

Assez curieusement, les navigateurs réservent souvent de gros morceaux de mémoire, qu’ils modifient constamment. Lorsque de tels morceaux sont échangés, cela prend du temps s'ils sont demandés - et en même temps, le navigateur met à jour ses caches. Ce qui provoque d'énormes latences. En pratique, vous serez assis pendant 2 minutes à attendre le chargement de la page Web unique dans un nouvel onglet.

Desktop ne s'intéresse pas vraiment au disque io, car le bureau lit et écrit rarement en mémoire cache de grandes parties de données répétitives. Couper sur le disque io afin d'empêcher tout échange est beaucoup plus favorable pour les ordinateurs de bureau que d'avoir 30% de mémoire réservée au cache disque avec 30% de RAM (plein de blocs appartenant à des applications activement utilisées).

Lancez simplement htop, ouvrez un navigateur, GIMP, LibreOffice - chargez peu de documents et naviguez pendant plusieurs heures. C'est vraiment aussi simple que cela.

    
réponse donnée Linux dude 02.06.2014 - 00:10
la source
9

Si vous exécutez un serveur Java sur votre système Linux, vous devriez vraiment envisager de réduire le swappiness de beaucoup par rapport à la valeur par défaut de 60. Donc, 20 est un bon début. La permutation est un facteur déterminant pour un processus de récupération de place, car les collections doivent à chaque fois toucher de grandes parties de la mémoire du processus. Le système d’exploitation n’a pas les moyens de détecter de tels processus et d’y remédier. Il est recommandé d'éviter de permuter autant que possible pour les serveurs d'applications productifs.

    
réponse donnée Andreas 25.02.2014 - 13:22
la source
4

Je suggère de faire quelques expériences tout en ayant le moniteur système ouvert pour voir exactement combien de charge est votre machine, je suis également en cours d'exécution avec 4 Go de mémoire et un SSD de 128 Go donc changé la valeur de swappiness à 10 sous charge, mais en prime augmentera également la durée de vie du disque SSD car il subira moins d’écritures.

Pour un tutoriel vidéo simple sur la façon de faire cela avec une explication complète voir la vidéo YouTube ci-dessous

lien

    
réponse donnée Tech-Compass 07.06.2014 - 18:20
la source
1

Il se peut que le comportement de permutation perçu au démarrage ou à l’ouverture de programmes soit en grande partie dû à la lecture de fichiers de configuration, etc., depuis Linux. Il est donc préférable d’utiliser le programme du moniteur système avant de supposer que l’accès au disque dur est dû à un échange.

    
réponse donnée user1740850 24.04.2013 - 19:57
la source
1

Je souhaite ajouter un point de vue d’un ingénieur Big Data Performance pour donner aux autres utilisateurs un aperçu de la technologie 2017.

Mon expérience personnelle est que, même si j'ai désactivé l’échange pour garantir que mes systèmes fonctionnent à la vitesse maximale, sur mon poste de travail pour un problème spécifique, j’ai constaté que le swappiness de 1 et 10 entraînait pauses La permutation de 80 pour cette application particulière conduit à des performances bien meilleures et à des pauses plus courtes que la valeur par défaut (60). Notez que j'avais 8 Go de RAM et 4 256 Go de swap soutenu par 1 disque dur. J'indiquerais normalement des statistiques précises vues dans mes benchmarks et les spécifications matérielles complètes, mais je n'en ai pas encore fait et c'est un bureau bas de gamme récent qui n'est pas important ici.

De retour à mon ancienne société, la raison pour laquelle nous ne permettions pas le swappiness sur les serveurs Spark avec des nœuds de [500 à 4 To] x [10-100] est que nous avons perçu de mauvaises performances comme un signe de une manière plus efficace. Nous ne voulions pas non plus évaluer les disques durs / SSD. En outre, l'échange de cette quantité de RAM nécessiterait 10 à 30 disques par nœud avec des écritures parallèles pour minimiser le temps d'accès au disque.

Aujourd'hui, il y a 20 ans et 20 ans, il restera toujours à prouver que certains problèmes sont trop importants pour la RAM. Avec un temps et un argent infinis, nous pouvons acheter / louer plus de matériel ou redessiner tout processus pour obtenir des performances souhaitables. L'échange est juste un hack pour nous permettre d'ignorer le véritable problème (nous n'avons pas assez de RAM et nous ne voulons pas dépenser plus d'argent).

Pour ceux qui pensent que le swappiness supérieur est un mauvais conseil, voici une petite perspective. Dans le passé, les HD n'avaient que quelques Ko de mémoire, le cas échéant. L'interface était IDE / Parallel ATA. Le bus CPU était également beaucoup plus lent avec la RAM et beaucoup d’autres choses. En bref, les systèmes étaient très lents (par rapport à aujourd'hui) à tous les niveaux. Il y a quelques années, les disques durs utilisaient SATA3. Aujourd'hui, ils utilisent le protocole NVMe, qui présente d'importantes améliorations de la latence. Les HD ont beaucoup de Mo de cache. Et la partie la plus intéressante est lorsque vous utilisez un SSD moderne (endurance et perf beaucoup plus stables en lecture / écriture) avec NVMe ou PCIe comme stockage de swap. C'est le meilleur compromis entre coût et performance. Veuillez ne pas essayer ceci avec des SSD bon marché ou anciens.

Swap + SSDs! Avec un stockage volatile haute performance, je vous recommande fortement de tester une valeur de permutation élevée. Cela dépend principalement des modèles d'accès à la mémoire (accès aléatoire à toute la mémoire et accès rarement à la plupart), de l'utilisation de la mémoire, si la bande passante du disque est déjà saturée et du coût réel de la récupération.

    
réponse donnée ldmtwo 25.04.2018 - 22:21
la source

Lire d'autres questions sur les étiquettes