Noyau Linux

Espace d'échange de gestion de la mémoire du noyau Linux

Espace d'échange de gestion de la mémoire du noyau Linux

Partie un. L'espace Swap

Pour fonctionner correctement, un ordinateur doit disposer d'une quantité suffisante de mémoire. Dire simplement qu'il n'y en a jamais assez. Plus la mémoire physique est installée, plus elle est coûteuse. La plupart du temps, le résultat est un compromis intelligent entre les coûts et la vitesse d'accès aux cellules mémoire.

Pour parvenir à ce compromis, les systèmes UNIX/Linux combinent deux types de mémoire : la mémoire physique (RAM) et l'espace d'échange. Au total, c'est ce qu'on appelle la mémoire virtuelle d'un système informatique. La mémoire physique est plutôt chère mais rapide et accessible en quelques nanosecondes. En revanche, la mémoire d'échange est plutôt bon marché, mais lente et accessible en quelques millisecondes.

Il existe plusieurs raisons pour lesquelles la mémoire d'échange est utile. Premièrement, parfois des processus uniques ont besoin de plus de mémoire que le système n'en possède physiquement et peuvent fournir plus aux processus qui le demandent. Par conséquent, toutes les données conservées dans la mémoire physique ne peuvent plus y être stockées. Maintenant, l'espace d'échange entre en jeu et une sélection de pages de mémoire est transférée vers l'espace d'échange pour libérer de la mémoire physique.

Deuxièmement, toutes les données ne sont pas nécessaires en mémoire en même temps. C'est pourquoi les pages mémoire les moins utilisées sont parquées sur l'espace d'échange pour avoir autant de mémoire physique disponible que possible. Cette méthode est appelée algorithme de remplacement de page le moins récemment utilisé (LRU) [1].

Types d'échange

L'espace d'échange existe en deux variantes. La version 1 est une partition de disque distincte qui est la soi-disant partition d'échange. Il n'y a pas de fichiers stockés sur cette partition mais des informations sur la mémoire (vidages). Simplement, la version 2 est un fichier sur un disque qui réside dans le système de fichiers de votre disque dur. La version 1 est très courante sur les systèmes UNIX/Linux, BSD et OS X, alors que la version 2 existe sur les systèmes qui exécutent Microsoft Windows. La version 2 peut également être activée sur les systèmes UNIX/Linux (voir ci-dessous).

Pour voir quel espace de swap est actif sur votre système UNIX/Linux, exécutez la commande suivante dans un terminal :

$ /sbin/swapon -s
Nom de fichier      Type       Taille        Utilisé      Priorité
/dev/dm-3   partition  16150524   316484  -1
$

Comme alternative, vous pouvez envoyer une requête au système de fichiers proc et exécuter la commande cat /proc/swaps

Ce système Linux a une partition d'échange d'une taille d'environ 15 Go dans laquelle plus de 300 Mo sont actuellement utilisés. La colonne Priorité indique quel espace d'échange utiliser en premier. La valeur par défaut est -1. Plus la valeur de priorité est élevée, plus tôt cet espace de swap est pris en compte. L'option -s est la version courte de -summary. Cette option est obsolète et il est recommandé d'utiliser l'option -show comme suit à la place :

$ /sbin/swapon --show=NAME,TYPE,SIZE,USED,PRIO
NOM       TYPE       TAILLE   UTILISÉ PRIO
/dev/dm-3 partition 15,4G 307,1M   -1
$

L'option -show accepte une liste de valeurs qui représentent les en-têtes de colonnes. Afin d'obtenir un ordre de sortie spécifique, choisissez les en-têtes de colonne souhaités et leur séquence.

Échange de taille

En règle générale, la taille de l'espace de swap, il est recommandé d'être deux fois plus grande que la mémoire physique du système. Gardez cela à l'esprit pour les configurations à usage général et les machines de bureau. Pour les serveurs UNIX/Linux avec beaucoup plus de mémoire physique, vous pouvez réduire la taille de l'espace de swap à 50 % de la RAM. Les ordinateurs portables pouvant hiberner doivent être légèrement plus volumineux que la mémoire physique.

Installation

Pour une partition d'échange, il est recommandé de penser à l'espace d'échange dès le début de la division du disque en partitions simples, ou de laisser suffisamment d'espace disque inutilisé pour l'utiliser plus tard, éventuellement. Habituellement, lors de la configuration des disques à utiliser, la routine d'installation vous demande la taille de l'espace de swap. À titre d'exemple, sur Debian GNU/Linux, cela ressemble à ceci :

Comme mentionné ci-dessus, tant que vous avez de l'espace pour de nouvelles partitions sur votre disque dur, vous pouvez créer et inclure des partitions d'échange à l'aide de commandes telles que fdisk et swapon.

Alternativement, l'espace d'échange peut également être activé ultérieurement en tant que fichier d'échange. Linux prend en charge cette méthode afin que vous puissiez la créer, la préparer et la monter d'une manière similaire à celle d'une partition d'échange. L'avantage de cette façon est que vous n'avez pas besoin de repartitionner un disque pour ajouter de l'espace de swap supplémentaire.

Par exemple, nous créons un fichier nommé /swapfile avec une taille de 512M, et l'activons comme espace d'échange supplémentaire. Tout d'abord, à l'aide de la commande dd, nous créons un fichier vide. Deuxièmement, mkswap utilise ce fichier pour le transformer en style swap. Vous remarquerez peut-être que le contenu du fichier est traité comme une partition et qu'un UUID correspondant est attribué. Troisièmement, nous activons cela en utilisant swapon. Enfin, la commande swapon -show affiche deux entrées d'échange - une partition et le fichier nouvellement créé.

# dd if=/dev/zero of=/swapfile bs=1024 count=524288
524288+0 ensembles de données dans
524288+0 ensembles de données sortis
536870912 octets (537 Mo) copiés, 0,887744 s, 605 Mo/s
# mkswap /fichier d'échange
Configuration de l'espace d'échange version 1, taille = 524284 Kio
pas d'étiquette, UUID=e47ab7fe-5efc-4175-b287-d0e83bc10f2e
# swapon /fichier d'échange
# swapon --show=NAME,TYPE,SIZE,USED,PRIO
NOM      TYPE       TAILLE   UTILISÉ PRIO
/dev/dm-3 partition 15,4G 288,9M   -1
/swapfile file       512 M      0B   -2
#

Pour utiliser ce fichier d'échange au démarrage, ajoutez, en tant qu'administrateur, la ligne suivante au fichier /etc/fstab :

/swapfile  none   swap  sw   0   0

Désactiver un espace d'échange

Le moins mais pas le dernier, il y a une commande pour désactiver le fichier d'échange, encore une fois. La commande s'appelle échanger. Il nécessite un seul paramètre qui indique que le périphérique d'échange doit être désactivé. Cette commande désactive le fichier d'échange précédemment activé :

# échange/fichier d'échange

Également, échanger peut fonctionner avec l'UUID d'un système de fichiers. Faire échanger agissez de cette façon utilisez l'option -U suivi de l'UUID du système de fichiers correspondant. Au cas où il serait nécessaire de désactiver tous les espaces d'échange à la fois, l'option -une (option longue -all) est assez pratique. La commande complète est échange -a.

Optimiser l'écosystème d'échange

À partir des versions 2 du noyau Linux.6 une nouvelle valeur a été introduite. Ceci est stocké dans la variable /proc/sys/vm/swappinesset 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 [2]. La valeur par défaut est 60 (pourcentage de mémoire libre avant d'activer le swap). Plus la valeur est faible, moins d'échange est utilisé et plus de pages de mémoire sont conservées dans la mémoire physique.

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 le sysctl commande comme suit :

# sysctl -w vm.échange=10

Pour définir la valeur de manière permanente, ajoutez la ligne suivante au fichier /etc/sysctl.conf :

vm.échange = 10

L'échange est-il toujours à jour?

Vous pouvez demander pourquoi nous traitons ce sujet. Les ordinateurs modernes ont suffisamment de mémoire physique - alors pourquoi devons-nous nous en soucier? Il y a plusieurs raisons pour lesquelles cette technologie vaut plus qu'une pensée.

Gardez à l'esprit que vous restez avec votre machine pendant un certain temps, mais que vous pouvez mettre à jour le logiciel que vous utilisez dessus de temps en temps. Actuellement, le matériel et le logiciel se correspondent. À l'avenir, cela peut changer et vous avez besoin de plus de mémoire que vous n'en avez maintenant. À moins de mettre à niveau ou d'acheter un nouveau matériel, une partition Swap pourrait vous faire économiser un peu d'argent.

Vous avez peut-être entendu parler d'une fonctionnalité appelée suspension sur disque ou mode veille prolongée [3]. Votre machine va dormir. Avant de faire cela, il doit stocker son état actuel quelque part. Maintenant, l'espace d'échange entre en jeu et agit comme un conteneur pour conserver ces données. Dès que la machine se réveille la prochaine fois que les données entières sont lues à partir de l'espace Swap, chargées en mémoire, et vous pouvez continuer à travailler là où vous vous êtes arrêté auparavant.

Le système, s'il n'a qu'un seul périphérique de stockage permanent, devra lire et écrire vos fichiers tout en échangeant sur le même périphérique. Vous verrez une énorme amélioration si vous avez un deuxième périphérique et pouvez séparer le périphérique d'échange des accès aux fichiers en conflit.

Le fichier d'échange doit transmettre les données via le système de fichiers. Cela ajoute une couche d'indirection, pour faire apparaître qu'il existe un espace d'adressage logique contigu avec lequel le noyau fonctionne. Cela ajoute une surcharge de mémoire et des cycles de processeur supplémentaires. Vous obtiendrez les meilleurs résultats en utilisant une partition d'échange brute.

Conclusion

Même aujourd'hui, la connaissance du Swap est essentielle. Ce sujet fait partie des connaissances requises pour passer le certificat de niveau 1 du Linux Professional Institute (LPIC 1). La plupart des examens contiennent une ou deux questions sur ce sujet.

L'espace d'échange aide votre système Linux (noyau) à organiser rapidement la mémoire en cas de besoin. Pour être ouvert avec vous, l'espace d'échange n'est pas absolument nécessaire au cas où votre système aurait des tonnes de RAM. En cas d'urgence, il aide votre système à survivre. C'est pourquoi je ne quitterais jamais le chemin d'une configuration traditionnelle sans espace d'échange.

La combinaison de Swap et SSD est discutée de manière controversée car le nombre d'écritures de disque sur un SSD est assez limité. Les fichiers d'échange et temporaires sont conçus pour écrire de nombreuses données. D'autre part, les SSD modernes ont plus qu'assez d'espace supplémentaire (7%) pour faire face aux défaillances du secteur. Par prudence : si possible, ayez un Swap séparé sur un disque dur conventionnel - n'utilisez pas de ramdisk, ni de SSD, du moins pour le swap [4]. Votre système Linux vous remerciera pour cette décision.

Pour éviter de mettre l'espace de swap sur votre SSD, vous pouvez utiliser la ZRAM à la place [5,6]. Il s'agit de Virtual Swap compressé en RAM, également nommé zSwap. Cette technologie permet à un périphérique de bloc compressé en mémoire. Dès qu'il n'y a plus de mémoire, les pages de mémoire sont transférées vers ce périphérique bloc. Cela se traduit par moins d'utilisation de l'échange et contribue également à prolonger la durée de vie de votre disque dur.

Liens et références

Série de gestion de la mémoire Linux

Remerciements

L'auteur tient à remercier Mandy Neumeyer et Gerold Rupprecht pour leur soutien lors de la préparation de cet article.

Remappez les boutons de votre souris différemment pour différents logiciels avec X-Mouse Button Control
Peut-être que vous avez besoin d'un outil qui pourrait faire changer le contrôle de votre souris avec chaque application que vous utilisez. Si tel est...
Examen de la souris sans fil Microsoft Sculpt Touch
J'ai lu récemment sur le Microsoft Sculpt Touch souris sans fil et j'ai décidé de l'acheter. Après l'avoir utilisé pendant un certain temps, j'ai déci...
Trackpad et pointeur de souris à l'écran AppyMouse pour tablettes Windows
Les utilisateurs de tablettes ratent souvent le pointeur de la souris, surtout lorsqu'ils ont l'habitude d'utiliser les ordinateurs portables. Les sma...