Meilleur solvant pour lave-pièces en 2020
3 novembre 2020
Top 6 des meilleurs chargeurs de batterie de moto en 2020 Avis et guide d'achat
3 novembre 2020

Shutterstock / Mbok Menawa

Un fichier d'échange est utilisé par Linux lorsque les processus manquent de mémoire. Plutôt que de planter, le processus sera autorisé à utiliser une partie du disque, ce qui est beaucoup plus lent, mais évite les pannes de mémoire non intentionnelles qui peuvent nuire à la disponibilité du service.

Qu'est-ce qu'un fichier d'échange?

Commençons par une question rhétorique: que se passe-t-il lorsque votre ordinateur manque de mémoire?

Sous Linux, un processus de surveillance spécial – le processus de surveillance / tueur de MOO – surveillera si un système manque de mémoire, à moins que le tueur de MOO n'ait été désactivé ou configuré différemment.

Lorsque cela se produit, ce processus mettra fin à l'un des processus en cours d'exécution sur le système afin de libérer de la mémoire. Cela peut entraîner des résultats douloureux tels que la corruption des données ou des services indisponibles. L'acronyme MOO signifie «Out of Memory»

Une solution consiste à acheter de la mémoire supplémentaire ou à réduire le nombre de programmes ou de services s'exécutant simultanément sur l'ordinateur ou le serveur. Mais que diriez-vous si nous pouvions utiliser une partie de notre espace disque (généralement bon marché) comme «mémoire supplémentaire»?

C'est exactement ce qu'est et fait un fichier d'échange: un fichier spécial créé sur votre périphérique de stockage qui fait alors partie de la mémoire principale. Pas directement, et il y a une surcharge de traitement, mais indirectement et avec un impact considérable sur la vitesse de traitement.

Avantages et inconvénients du fichier d'échange

La mémoire principale est généralement ultra rapide par rapport aux disques plus lents. Même les SSD (disques SSD) sont presque toujours plus lents que les puces de mémoire principale haute vitesse. Pour les disques durs (disques durs mécaniques, rotatifs, traditionnels), la différence de vitesse est encore beaucoup plus grande.

C'est donc un net avantage, dans la plupart des configurations, d'utiliser un disque plus lent (SDD et surtout HDD) comme source de mémoire. Le délai d'écriture des données entre la mémoire principale et le disque (c'est-à-dire en utilisant le disque comme mémoire) est appelé «swapping» (échange de mémoire avec de l'espace disque)

Cela dit, c'est toujours une bonne idée d'avoir un fichier d'échange de côtés raisonnables sur votre système. La raison est simple; disons que nous n'avons besoin que d'un gigaoctet supplémentaire de mémoire pendant quelques minutes pour nous assurer que notre système n'invoque pas le tueur OOM et met fin à certains processus. Un fichier d'échange est préférable dans ce cas, car même si un processus manque de RAM utilisable, il ne plantera pas, il sera juste un peu plus lent jusqu'à ce qu'il termine sa tâche.

Cependant, si le système commence à échanger fortement, il deviendra presque certainement plus lent (lire: beaucoup plus lent). Ce sera très perceptible.

En résumé, il y a un équilibre fin et délicat, qui est quelque peu arbitraire et dépend de beaucoup de choses différentes dans une situation donnée; le nombre de processus en cours d'exécution sur un système et leurs tailles de mémoire de travail, la mémoire totale utilisée, la mémoire disponible dans le fichier d'échange, la configuration de fichier d'échange spécifique du système, etc.

Quelques considérations sur les fichiers d'échange

Sur de nombreuses configurations Linux dans le monde aujourd'hui, il existe une partition d'échange attribuée sur l'un des disques du système. Il s'agit d'un domaine spécial, généralement (mais pas exclusivement; il peut être ajouté plus tard) réservé lors de l'installation du système d'exploitation Linux. Il a la même fonctionnalité cible est la même que celle d'un fichier d'échange. Pour vérifier si votre système a une forme de swap actuellement activée, exécutez simplement ce qui suit dans votre terminal:

sudo apt -y installer htop
htop

Et recherchez la sortie suivante:

sortie htop de la mémoire principale et de l'espace d'échange

Remarquez comment sur ce système, il y a une mémoire principale de 62,7 Go et un espace de swap de 11,0 Go. Vous pouvez également voir comment seule une petite quantité (23,5 millions) est actuellement utilisée. Si vous pensez que votre système change, vérifiez à quoi ressemblent ces deux compteurs.

S'ils sont tous les deux presque pleins, il est fort probable que votre système permute fortement et fonctionnera beaucoup plus lentement. La raison en est qu'il y a maintenant une lourde charge liée aux E / S (c'est-à-dire liée au disque), échangeant constamment la mémoire principale avec la mémoire sur disque.

En règle générale, certaines personnes préfèrent utiliser un certain pourcentage de mémoire système comme taille à allouer à un fichier d'échange. Personnellement, je prends une autre voie, et c'est de considérer combien de mémoire supplémentaire je pourrais avoir besoin. Si la taille est considérable, par exemple, un serveur de 8 Go finira probablement par utiliser 14 Go pour un cas d'utilisation spécifique, il est alors beaucoup plus logique d'augmenter la mémoire du serveur de 8 Go à 16 Go.

Cependant, si le système dispose de 8 Go et que l'utilisation habituelle est de 6 à 7 Go avec un pic occasionnel si je démarre trop de programmes à la fois, je peux envisager un espace de swap supplémentaire de 8 Go, ou un peu plus. L'espace disque est généralement assez bon marché, donc le surdimensionner un peu, à condition que vous en ayez, ne fera pas de mal.

Comment activer un fichier d'échange

Prêt à ajouter un fichier d'échange? Cela peut être fait à la volée. Cette méthode fonctionnera aussi bien sur les systèmes basés sur Debian (Ubuntu, Mint,…) que sur RedHat (RedHat, Centos,…).

Nous allons créer un fichier d'échange de 1 gigaoctet, ou 1000 mégaoctets ou 1024000 blocs (calculé comme le nombre de mégaoctets x 1024) dans cet exemple.

Nous l'appellerons swapfile123, situé dans le répertoire racine (/), et nous lui avons donné ce nom pour éviter d'écraser tout fichier que vous avez déjà en place. Si vous êtes sûr de ne pas avoir de fichier nommé / swapfile, vous pouvez l'utiliser à la place si vous le souhaitez, en prenant soin de changer correctement le nom de fichier à tous les endroits.

Veuillez vous assurer de saisir toutes les commandes, et en particulier le jj , avec précaution afin de ne pas écraser les données de votre système. Nous utilisons sudo su pour entrer en mode superutilisateur (su) via sudo. Cela revient à exécuter chaque commande en utilisant sudo, bien qu'il soit plus facile de ne pas taper chaque préfixe de commande sudo en utilisant cette méthode.

sudo su
if (-r / swapfile123); then echo "Arrêtez s'il vous plait! / swapfile123 existe déjà!"; Fi
jj si = / dev / zéro de = / swapfile123 bs = 1024 count = 1024000
chmod 0600 / swapfile123
mkswap / swapfile123
swapon / swapfile123

Vous devriez voir une sortie similaire à ce qui suit:

Activation des fichiers d'échange sous Linux

Si oui, félicitations! Vous venez d'activer votre premier fichier d'échange, dynamiquement (à la volée), sur la ligne de commande Linux!

Nous avons d'abord utilisé le jj outil pour créer notre espace d'échange, en utilisant le / dev / zéro périphérique (un périphérique virtuel qui génère simplement des zéros lorsqu'il est appelé, par jj ou tout autre outil). Ensuite, nous définissons certains privilèges de sécurité appropriés.

Nous avons ensuite indiqué au système d'exploitation que le fichier devait être transformé en fichier d'échange en utilisant le mkswap commander. Enfin, nous avons activé le swapspace, dynamiquement sur la ligne de commande, sans avoir à redémarrer notre système.

Nous pouvons également vérifier facilement si notre espace d'échange est devenu plus grand en utilisant gratuit -m:

free -m montrant comment l'espace d'échange diminue lorsque nous le désactivons

Génial, vous pouvez voir comment nous sommes passés de 12215M à 11215M (-1000M comme prévu) lorsque nous avons désactivé le fichier d'échange nouvellement créé. Vous pouvez également voir comment nous avons utilisé échange pour désactiver dynamiquement le swap sur la ligne de commande.

Il est bon de savoir que si jamais nous voyons notre système entrer dans des problèmes de mémoire et que nous pouvons taper assez rapidement, nous pouvons lui donner de la mémoire supplémentaire à la volée 🙂 En pratique, il est préférable de le faire avant que les problèmes ne surviennent.

Nous n'avons plus qu'un seul petit problème à régler. Si nous devions redémarrer à ce moment, alors que notre fichier d'échange resterait sur le disque, le système ne l'utiliserait pas. Aucune modification de paramètre n'a été apportée jusqu'à présent, ce qui garantira que l'espace d'échange est rechargé au redémarrage du système.

Activation de notre nouveau swap au moment du démarrage

Pour activer le nouvel espace de swap au démarrage, ajoutez simplement la ligne suivante (comme ligne) à / etc / fstab:

/ swapfile123 swap swap par défaut 0 0

Vous pouvez le faire pendant que vous êtes encore sudo su mode (comme indiqué par le #) en démarrant l'éditeur nano pour / etc / fstab:

nano / etc / fstab
chat / etc / fstab

Ensuite, ajoutez simplement la ligne ci-dessus au fichier à la fin et enregistrez (CTRL + X> Y> entrée). Ne modifiez ni ne supprimez aucune autre ligne car cela pourrait empêcher votre système de démarrer correctement. Assurez-vous également de vérifier le contenu de votre fichier / etc / fstab avant de redémarrer en exécutant le chat / etc / fstab au dessus.

Vous pouvez maintenant redémarrer votre système et confirmer que votre espace d'échange supplémentaire est toujours disponible en utilisant gratuit -m encore.

Suppression de notre nouvel espace de swap

Si vous voulez supprimer le nouvel espace d'échange, ou peut-être en créer un un peu plus grand, vous pouvez le faire en éditant à nouveau le fichier / etc / fstab et en supprimant la ligne qui charge le fichier d'échange en entier. Ne modifiez ni ne supprimez aucune autre ligne car cela pourrait empêcher votre système de démarrer correctement! Vous pouvez ensuite exécuter:

sudo swapoff / swapfile123
rm / swapfile123

Terminé! Pas besoin de redémarrer non plus, car cette modification a été effectuée de manière dynamique. Au prochain redémarrage, le fichier d'échange ne sera plus activé car nous avons supprimé la ligne correspondante du fichier / etc / fstab.

Profitez de Swapfiles!

//]]>