Noyau Linux

Comprendre la machine virtuelle.échange

Comprendre la machine virtuelle.échange
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 du répertoire /proc à l'aide de la commande cat comme suit :

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

L'un de ces paramètres du noyau s'appelle vm.échange. Il "contrôle le poids relatif accordé à l'échange de la mémoire d'exécution, par opposition à la suppression des pages mémoire du cache des pages système" [6]. À partir des versions 2 du noyau Linux.6 cette valeur a été introduite. Il est stocké dans le fichier /proc/sys/vm/swappiness .

Utilisation de l'échange

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

Si vous exécutez de nombreuses tâches, les tâches inactives seront transférées sur le disque, ce qui permet une meilleure utilisation de la mémoire avec vos tâches actives. Le montage vidéo et d'autres applications gourmandes en mémoire ont souvent des quantités recommandées 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] pour en savoir plus à ce sujet).

L'échange peut se produire sur une partition séparée 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 par fichier est plus flexible (voir le paquet dphys-swapfile dans Debian GNU/Linux [7]). Avoir plus d'un périphérique physique pour l'échange permet au noyau Linux de choisir le périphérique le plus rapidement disponible (latence plus faible).

vm.échange

La valeur par défaut de vm.swappiness est de 60 et représente le pourcentage de mémoire libre avant d'activer le swap. Plus la valeur est faible, moins d'échange est utilisé et plus de pages mémoire sont conservées dans la 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 serveur, à la place. Comme le souligne le manuel Red Hat Performance Tuning [8], une valeur de swappines 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 swappines de 10. En revanche, pour les bases de données MariaDB, il est recommandé de définir le swappiness sur une valeur de 1 [9].

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

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

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

# sysctl vm.échange
vm.échange = 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.échange=10

Pour définir la valeur de façon permanente, ouvrez le fichier /etc/sysctl.conf en tant qu'administrateur et ajoutez la ligne suivante :

vm.échange = 10

Conclusion

De plus en plus d'utilisateurs Linux utilisent 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 elles, donc la modification du paramètre à l'intérieur de la machine virtuelle aura des résultats indéterminés. Expérimentez d'abord en modifiant les valeurs du noyau de l'hyperviseur, car il contrôle en fait le matériel de votre machine.

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

Si vous avez plus d'un périphérique d'échange, envisagez d'en faire un périphérique RAID pour répartir les données sur les périphériques disponibles.

Vous pouvez apporter des modifications au swappines 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 besoins en mémoire, améliorera les performances et simplifiera tout.

Une dernière note : vous ajouterez de la charge à vos périphériques d'échange. Vous voudrez surveiller les températures d'entre eux. Un système surchauffé abaissera la fréquence de son processeur et ralentira.

Remerciements

L'auteur tient à remercier tout particulièrement 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 sur le noyau Linux pour les débutants, https://linuxhint.com/linux-kernel-tutorial-beginners/

* [2] Derek Molloy : Écriture d'un module de noyau Linux - Partie 1 : Introduction, http://derekmolloy.ie/writing-a-linux-kernel-module-part-1-introduction/

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

* [4] Derek Molloy : Écriture d'un module de noyau Linux - Partie 3 : Boutons et voyants, http://derekmolloy.ie/kernel-gpio-programming-buttons-and-leds/

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

* [6] Frank Hofmann : Gestion de la mémoire du noyau Linux : espace d'échange, https://linuxhint.com/linux-memory-management-swap-space/

* [7] paquet dphys-swapfile pour Debian GNU/Linux, https://packages.debian.org/stretch/dphys-swapfile

* [8] Guide de réglage des performances Red Hat, 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/library/configuring-swappiness/

Comment afficher la superposition OSD dans les applications et jeux Linux en plein écran
Jouer à des jeux en plein écran ou utiliser des applications en mode plein écran sans distraction peut vous couper des informations système pertinente...
Top 5 des cartes de capture de jeu
Nous avons tous vu et aimé des gameplays en streaming sur YouTube. PewDiePie, Jakesepticye et Markiplier ne sont que quelques-uns des meilleurs joueur...
Comment développer un jeu sur Linux
Il y a dix ans, peu d'utilisateurs de Linux prédisaient que leur système d'exploitation préféré serait un jour une plate-forme de jeu populaire pour l...