Comprendre VM.swapposité

Comprendre VM.swapposité
Le noyau Linux est un logiciel assez complexe avec une longue liste de composants tels que des modules, des interfaces et des fichiers de configuration [1]. Ces composants peuvent être configurés avec des valeurs spécifiques afin d'obtenir un comportement ou un mode de fonctionnement souhaité du composant [2,3,4]. Par la suite, cette configuration influence directement à la fois le comportement et les performances de votre système Linux dans son ensemble.

Les valeurs actuelles du noyau Linux et de ses composants sont rendues accessibles à l'aide d'une interface spéciale - le répertoire / proc [5]. Il s'agit d'un système de fichiers virtuel dans lequel les fichiers uniques sont remplis de valeurs en temps réel. Les valeurs représentent l'état réel dans lequel se trouve le noyau Linux. Vous pouvez accéder aux fichiers individuels dans le répertoire / proc en utilisant la commande CAT comme suit:

$ cat / proc / sys / net / core / somaxconn
128
$

Un de ces paramètres du noyau est appelé VM.swapposité. Il «contrôle le poids relatif donné à l'échange de la mémoire d'exécution, par opposition à la suppression des pages de mémoire du cache de la page système» [6]. En commençant par les librèles de noyau Linux 2.6 Cette valeur a été introduite. Il est stocké dans le fichier / proc / sys / vm / swappiness .

Utilisation d'échange

L'utilisation de Swap [6] était une partie essentielle de l'utilisation de machines Unix plus petites au début des années 1990. Il est toujours utile (comme avoir un pneu de secours dans votre véhicule) lorsque les fuites de mémoire méchante interfèrent avec votre travail. La machine ralentira, mais dans la plupart des cas, sera toujours utilisable pour terminer sa tâche assignée. Les développeurs de logiciels gratuits ont fait de grands progrès pour réduire et éliminer les erreurs de programme, donc avant de modifier les paramètres du noyau envisagez d'abord de mettre à jour vers une version plus récente de votre application et de bibliothèques connexes.

Si vous exécutez de nombreuses tâches, les tâches inactives seront échangées sur le disque, ce qui fait mieux d'utiliser la mémoire avec vos tâches actives. L'édition vidéo et d'autres grandes applications consommatrices de mémoire ont souvent recommandé des quantités de mémoire et d'espace disque. Si vous avez une machine plus ancienne qui ne peut pas avoir de mise à niveau de mémoire, alors rendre plus de swap disponible peut être une bonne solution temporaire pour vous (voir [6] sur la façon d'en savoir plus à ce sujet).

L'échange peut se produire sur une partition distincte ou sur un fichier d'échange. La partition est plus rapide et favorisée par de nombreuses applications de base de données. L'approche du fichier est plus flexible (voir le package DPHYS-Swapfile dans Debian GNU / Linux [7]). Avoir plus d'un appareil physique pour l'échange permet au noyau Linux de choisir l'appareil qui est le plus rapidement disponible (latence inférieure).

machine virtuelle.swapposité

La valeur par défaut de la machine virtuelle.Le swappiness est de 60 et représente le pourcentage de la mémoire libre avant d'activer le swap. Plus la valeur est faible, moins d'échanges sont utilisés et plus les pages de mémoire sont maintenues en mémoire physique.

La valeur de 60 est un compromis qui fonctionne bien pour les systèmes de bureau modernes. Une valeur plus petite est une option recommandée pour un système de serveur, plutôt. Comme le souligne le manuel de réglage des performances Red Hat [8], une valeur de swappacité plus petite est recommandée pour les charges de travail de base de données. Par exemple, pour les bases de données Oracle, Red Hat recommande une valeur de swappacité de 10. En revanche, pour les bases de données MARIADB, il est recommandé de définir le swappacité à une valeur de 1 [9].

La modification de la valeur influence directement les performances du système Linux. Ces valeurs sont définies:

* 0: le swap est désactivé
* 1: une quantité minimale d'échange sans le désactiver entièrement
* 10: valeur recommandée pour améliorer les performances lorsque une mémoire suffisante existe dans un système
* 100: échange agressif

Comme indiqué ci-dessus, la commande CAT aide à lire la valeur. De plus, la commande sysctl vous donne le même résultat:

# VM sysctl.swapposité
machine virtuelle.swappiness = 60
#

Gardez à l'esprit que la commande sysctl n'est disponible que pour un utilisateur administratif. Pour définir la valeur, définissez temporairement la valeur dans le système de fichiers / proc comme suit:

# Echo 10> / Proc / Sys / VM / Swappiness

Comme alternative, vous pouvez utiliser la commande sysctl comme suit:

# Sysctl -W VM.swappiness = 10

Pour définir la valeur en permanence, ouvrez le fichier / etc / sysctl.Conf en tant qu'utilisateur administratif et ajoutez la ligne suivante:

machine virtuelle.swappiness = 10

Conclusion

De plus en plus d'utilisateurs Linux exécutent des machines virtuelles. Chacun a son propre noyau en plus de l'hyperviseur qui contrôle réellement le matériel. Les machines virtuelles ont des disques virtuels créés pour eux, donc la modification du réglage à l'intérieur de la machine virtuelle aura des résultats indéterminés. Expérimentez d'abord en modifiant les valeurs du noyau hyperviseur, car il contrôle réellement le matériel de votre machine.

Pour les machines plus anciennes qui ne peuvent plus être mises à niveau (ont déjà une mémoire prise en charge maximale), vous pouvez envisager de placer un petit disque à semi-conducteurs dans la machine pour l'utiliser comme périphérique d'échange supplémentaire. Cela deviendra évidemment un consommable car les cellules de mémoire échouent de nombreuses écritures, mais peuvent prolonger la durée de vie d'une machine pendant un an ou plus pour un coût très faible. La latence inférieure et les lectures rapides donneront de bien meilleures performances que de passer à un disque ordinaire, donnant des résultats intermédiaires à RAM. Cela devrait vous permettre d'utiliser une machine virtuelle un peu plus faible.Valeurs de swappiness pour des performances optimales. Vous devrez expérimenter. Les appareils SSD changent rapidement.

Si vous avez plus d'un dispositif d'échange, envisagez d'en faire un appareil RAID pour rayer les données sur les appareils disponibles.

Vous pouvez apporter des modifications à la swappineuse sans redémarrer la machine, un avantage majeur par rapport aux autres systèmes d'exploitation.

Essayez d'inclure uniquement les services dont vous avez besoin pour votre entreprise. Cela réduira les exigences de la mémoire, améliorera les performances et maintiendra tout plus simple.

Une note finale: vous ajouterez une charge à vos appareils d'échange. Vous voudrez en surveiller les températures. Un système surchauffé réduira sa fréquence de processeur et ralentira.

Remerciements

L'auteur tient à dire un merci spécial à Gerold Rupprecht et Zoleka Hatitongwe pour leurs remarques et commentaires critiques lors de la préparation de cet article.

Liens et références

* [1] Tutoriel du noyau Linux pour les débutants, https: // Linuxhint.com / linux-kernel-tuginners /

* [2] Derek Molloy: Écriture d'un module de noyau Linux - Partie 1: Introduction, http: // derekmolloy.c'est-à-dire / écriture-a-linux-kernel-module-parti-1-introduction /

* [3] Derek Molloy: Écriture d'un module de noyau Linux - Partie 2: Un périphérique de caractères, http: // derekmolloy.c'est-à-dire / écriture-a-linux-kernel-module-parti-2-a-character-device /

* [4] Derek Molloy: Écriture d'un module de noyau Linux - Partie 3: Boutons et LED, http: // Derekmolloy.IE / Kernel-gpio-programming-buttons-and-leds /

* [5] Frank Hofmann: Commandes pour gérer la mémoire Linux, https: // linuxhint.com / commandes-to-manage-linux-memory /

* [6] Frank Hofmann: Gestion de la mémoire du noyau Linux: Swap Space, https: // Linuxhint.com / Linux-Memory-Management-Swap-Space /

* [7] Package DPHYS-SWAPFILE pour Debian GNU / Linux, https: // packages.Debian.org / stretch / dphys-swaple

* [8] Guide de réglage des performances du chapeau rouge, https: // Access.chapeau rouge.com / documentation / en-us / red_hat_enterprise_linux / 6 / html / performance_tuning_guide / s-memory-tunables

* [9] Configuration de MariaDb, https: // Mariadb.com / kb / en / bibliothèque / configuration-swappiness /