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 d'échange

Afin de travailler correctement, un ordinateur dépend d'avoir une quantité adéquate de mémoire. Dire simplement qu'il ne peut jamais y en avoir assez. Plus la mémoire physique est installée, plus elle est coûteuse. Surtout, le résultat est un compromis intelligent entre les coûts et la vitesse pour accéder aux cellules mémoire.

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

Il existe quelques raisons pour lesquelles l'échange de la mémoire est utile. Premièrement, parfois des processus uniques ont besoin de plus de mémoire que le système physiquement et peuvent fournir plus aux processus qui l'exigent. En conséquence, toutes les données conservées en 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 dans l'espace d'échange sur la mémoire physique libre.

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

Types d'échanges

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 mémoire (vidanges). Simplement, la version 2 est un fichier sur un disque qui réside dans le système de fichiers sur votre disque dur. La version 1 est très courante sur les systèmes UNIX / Linux, BSD et OS X, tandis 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 d'échange est actif sur votre système UNIX / Linux exécutez la commande suivante dans un terminal:

$ / sbin / swapon -s
Taille de type de nom de fichier Priorité utilisée
/ Dev / DM-3 partition 16150524 316484 -1
$

En tant qu'alternative, vous pouvez envoyer une demande au système de fichiers PROC et exécuter la commande Cat / Proc / swaps

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

$ / sbin / swapon --show = nom, type, taille, utilisé, prio
Taille de nom Taille utilisée PRIO
/ Dev / DM-3 partition 15,4g 307,1m -1
$

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

Échange de taille

En règle générale, la taille de l'espace d'échange, il est recommandé d'être deux fois plus que le système a une mémoire physique. 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 abaisser la taille de l'échange à 50% de RAM. Les ordinateurs portables qui peuvent hiberner doivent être légèrement plus grands que la mémoire physique.

Installation

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

Comme mentionné ci-dessus, tant que vous avez de l'espace pour de nouvelles partitions sur votre harddisk, vous pouvez créer et inclure des partitions d'échange avec l'utilisation de commandes comme Fdisk et Swapon.

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

À titre d'exemple, nous créons un fichier nommé / fichier d'échange avec une taille de 512 m et nous permettons de cela comme un espace d'échange supplémentaire. Tout d'abord, avec l'aide de la commande DD, nous créons un fichier vide. Deuxièmement, Mkswap utilise ce fichier pour le transformer en style d'échange. Vous remarquerez peut-être que le contenu du fichier est traité comme une partition et qu'un UUID correspondant est attribué. Troisièmement, nous permettons cela en utilisant Swapon. Enfin, le swapon de commande -how 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
536870912 octets (537 Mo) copiés, 0,887744 s, 605 Mo / s
# mkswap / file d'échange
Configuration de la version 1 de l'espace swaps, taille = 524284 kib
pas d'étiquette, uuid = e47ab7fe-5efc-4175-b287-d0e83bc10f2e
# swapon / file d'échange
# swapon --show = nom, type, taille, utilisé, prio
Taille de nom Taille utilisée PRIO
/ Dev / DM-3 partition 15,4g 288,9m -1
/ fichier de file d'échange 512m 0b -2
#

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

/ Swapfile Aucun 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 est appelée échange. Il nécessite un seul paramètre qui indique que le périphérique d'échange soit désactivé. Cette commande désactive le fichier d'échange précédemment activé:

# swapoff / file d'échange

Aussi, échange peut fonctionner avec l'UUID d'un système de fichiers. Faire échange agir de cette façon, utilisez l'option -U suivi par l'UUID du système de fichiers selon. Dans le cas où il est nécessaire pour désactiver tous les espaces d'échange à la fois l'option -un (Long Option - All) est assez pratique. La commande complète est swapoff -a.

Réglage de l'écosystème de swap

En commençant par les librèles de noyau Linux 2.6 Une nouvelle valeur a été introduite. Ceci est stocké dans la variable / proc / sys / vm / swappinesset contrôle le poids relatif donné à l'échange de la mémoire d'exécution, au lieu de supprimer les pages de mémoire du cache de la page système [2]. La valeur par défaut est de 60 (pour cent de la mémoire libre avant d'activer l'échange). Plus la valeur est faible, moins l'échange est utilisé et plus les pages de mémoire sont conservées en mémoire physique.

  • 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 lorsqu'il existe une mémoire suffisante dans un système
  • 100: échange agressif

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

En tant qu'alternative, vous pouvez utiliser le sysctl Commande comme suit:

# Sysctl -W VM.swappiness = 10

Pour définir la valeur en permanence d'ajouter la ligne suivante au fichier / etc / sysctl.conf:

machine virtuelle.swappiness = 10

Est-ce que l'échange est toujours à jour?

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

Gardez à l'esprit que vous vous en tenez à votre machine pendant un certain temps, mais que vous pouvez mettre à jour le logiciel que vous utilisez de temps en temps. Actuellement, le matériel et le logiciel se conviennent. À l'avenir, cela pourrait changer, et vous avez besoin de plus de mémoire que vous ne l'avez maintenant. À moins que la mise à niveau ou l'achat de nouveau matériel, une partition d'échange ne puisse vous faire économiser un peu d'argent.

Vous avez peut-être entendu parler d'une fonctionnalité appelée Suspende sur disque ou mode Hibernate [3]. Votre machine va dormir. Avant de le faire, 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éveillera la prochaine fois que les données entières seront lues dans l'espace d'échange, chargées en mémoire, et vous pouvez continuer à travailler là où vous vous êtes arrêté avant.

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

Le fichier d'échange doit passer des 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 continu pour que le noyau fonctionne avec. Cela ajoute des frais généraux de mémoire et des cycles CPU. Vous obtiendrez les meilleurs résultats en utilisant une partition d'échange brut.

Conclusion

Même aujourd'hui, les connaissances concernant Swap sont essentielles. Ce sujet fait partie des connaissances nécessaires pour adopter le certificat du Linux Professional Institute Niveau 1 (LPIC 1). La plupart des examens contiennent une ou deux questions sur ce sujet.

L'espace d'échange aide votre système Linux (noyau) pour organiser rapidement la mémoire s'il y en a besoin. Pour être ouvert avec vous, l'espace d'échange n'est pas absolument nécessaire au cas où votre système aura des tonnes de RAM. En cas d'urgence, cela 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 de disques écrit sur un SSD est assez limité. Les échanges et les fichiers temporaires sont conçus pour écrire de nombreuses données. D'un autre côté, les SSD modernes ont plus qu'assez d'espace supplémentaire (7%) pour faire face aux défaillances du secteur. Pour être sûr: si possible, ayez un échange séparé sur un disque dur conventionnel - n'utilisez pas Ramdisk, ni un SSD, du moins pour Swap. Votre système Linux vous remerciera pour cette décision.

Pour éviter de mettre l'espace d'échange sur votre SSD, vous pouvez utiliser ZRAM, à la place [5,6]. Ceci est un swap virtuel comprimé dans RAM, également nommé Zswap. Cette technologie permet un dispositif de bloc comprimé en mémoire. Dès qu'il n'y a plus de mémoire des pages de mémoire gauche est transférée sur ce périphérique de bloc. Il en résulte moins d'utilisation des échanges et aide également à prolonger la durée de vie de votre disque dur aussi.

Liens et références

  • [1] Andrew. S. Tanenbaum: l'algorithme de remplacement de page le moins récemment utilisé (LRU) dans les systèmes d'exploitation modernes
  • [2] Wikipedia: https: // en.Wikipédia.org / wiki / swappiness
  • [3] Gestion de l'alimentation / suspendre et hibernate, arch Linux Wiki
  • [5] Zram sur Debian GNU / Linux
  • [6] L'archive du noyau Linux sur Zram

Série de gestion de la mémoire Linux

  • Partie 1: Gestion de la mémoire du noyau Linux: Swap Space
  • Partie 2: Commandes pour gérer la mémoire Linux
  • Partie 3: Optimisation de l'utilisation de la mémoire Linux

Remerciements

L'auteur tient à remercier Mandy Neumeyer et Gerold Rupprecht pour leur soutien tout en préparant cet article.