La mémoire virtuelle est l'une de ces choses qui sous-tendent les systèmes d'exploitation modernes, mais généralement, vous n'y pensez pas vraiment à moins que vous n'ayez un problème. Les distributions Linux vous demandent de configurer votre espace de mémoire virtuelle (partitions d'échange) lors de l'installation, mais la plupart des débutants ne savent pas à quel point cela est utile.
Voici tout ce que vous devez savoir sur la mémoire virtuelle sous Linux.
Qu'est-ce que la mémoire virtuelle ?
La mémoire virtuelle est un moyen de représenter votre mémoire qui est extraite de la mémoire physique de votre machine. Il utilise à la fois votre RAM et votre espace de stockage, que ce soit sur un disque dur traditionnel ou un SSD.
Sous Linux, cela se fait au niveau du noyau et du matériel. Le processeur possède un élément matériel appelé unité de gestion de la mémoire (MMU) qui traduit les adresses de mémoire physique en adresses virtuelles. Ces adresses sont indépendantes de leur emplacement physique sur la machine. Ces espaces d'adressage sont appelés "pages" et peuvent se trouver dans la RAM ou sur votre disque dur ou SSD. Le système d'exploitation considère ces adresses comme un grand pool de mémoire, appelé "espace d'adressage".
La mémoire virtuelle tire parti du fait que toute la mémoire utilisée en théorie n'est pas utilisée tout le temps. Les programmes en mémoire sont décomposés en pages et les parties que le noyau juge inutiles sont "permutées" ou déplacées vers le disque dur. Lorsqu'ils sont nécessaires, ils peuvent être "permutés" ou ramenés dans la RAM.
L'espace utilisé pour la mémoire virtuelle sur un lecteur est appelé "magasin de sauvegarde" ou "espace d'échange". Dans le monde Windows, c'est généralement implémenté sous forme de fichier, appelé "fichier d'échange". Il est également possible de le faire sous Linux, mais c'est beaucoup plus courant à utiliser une partition de disque dédiée.
Les fichiers d'échange sous Linux sont généralement réservés aux systèmes minimaux ou embarqués, et il est courant que ces derniers fonctionnent complètement sans mémoire virtuelle car les systèmes d'exploitation embarqués doivent être petits.
Le résultat de la mémoire virtuelle est qu'il est possible d'exécuter de gros programmes en utilisant plus de mémoire que la RAM physique dans votre machine, similaire à la façon dont une carte de crédit vous permet de faire des achats importants pour plus d'argent que vous n'en avez dans votre banque Compte. Comme une carte de crédit, la mémoire virtuelle est utile lorsque vous en avez besoin, mais vous ne voulez pas en étendre l'utilisation.
La mémoire virtuelle permet également aux développeurs de créer des applications sans avoir à connaître l'organisation de la mémoire d'un ordinateur.
Historiquement, le principal inconvénient de la mémoire virtuelle a été que les disques durs étaient plus lents que la RAM. Si une machine n'a pas assez de RAM, le système peut continuer à échanger des pages à l'infini, un processus connu sous le nom de "thrashing". C'est moins de problème sur les PC modernes avec plus de RAM et des SSD plus rapides déplaçant les disques durs mécaniques, mais c'est toujours quelque chose à savoir de.
Partitions d'échange Linux
Comme mentionné précédemment, la méthode habituelle de configuration de la mémoire virtuelle sous Linux consiste à utiliser une partition de disque dédiée. L'utilitaire d'installation examinera votre matériel et proposera un schéma de partitionnement incluant une partition swap.
Vous pouvez également ajouter des partitions swap après l'installation. Si vous souhaitez ajouter une nouvelle partition à un lecteur existant, vous devrez utiliser un outil de partitionnement non destructif comme GParted. Assurez-vous d'avoir sélectionné "Linux swap" comme système de fichiers pour votre partition.
Sauvegardez les données importantes avant de repartitionner votre disque.
Après avoir créé votre partition, utilisez la commande mkswap pour formater votre partition.
sudo mkswap /dev/sdX
Vous devez maintenant modifier votre /etc/fstab en tant que root pour ajouter votre partition de swap. Cette ligne, ajoutée au fichier, configurera une partition d'échange à monter au démarrage :
/dev/sdX aucun échanger les valeurs par défaut 0 0
Utilisez maintenant le échanger commande pour activer votre nouvel espace d'échange, où sdX est le nom de votre partition d'échange :
échange sudo sur /dev/sdX
Utilisation de fichiers d'échange sous Linux
C'est facile de configurer un fichier d'échange sous Linux en utilisant la ligne de commande. Vous voudrez peut-être le faire si vous ne voulez pas vous soucier de repartitionner votre lecteur ou de modifier /etc/fstab. Une méthode consiste à utiliser tomber:
Par exemple, pour créer un fichier d'échange de 2 Go :
sudo fallocate -l 2G /chemin/vers/fichier d'échange
Comme alternative, vous pouvez utiliser la commande dd pour créer le fichier d'échange.
sudo jj si=/dev/zéro de=/path/vers/swapfile bs=1024 compte=2048
Assurez-vous que vous utilisez correctement la commande dd, car une erreur dans les fichiers d'entrée et de sortie peut entraîner une perte de données. fallocate est la méthode préférée pour cette raison.
La /dev/zero périphérique est un périphérique spécial qui affiche "0". Cette commande dd crée un fichier de bloc vierge de deux gigaoctets à l'aide de blocs de 1024 kilo-octets pouvant être utilisés comme espace d'échange.
Vous pouvez ensuite utiliser le mkswap et échanger commandes avec un fichier d'échange comme vous le feriez avec une partition d'échange :
sudo mkswap /chemin/vers/fichier d'échange
sudo swapon /chemin/vers/fichier d'échange
Vous vous demandez peut-être quand utiliser un fichier d'échange ou une partition dédiée pour votre espace d'échange. Le choix est simple: dans la plupart des cas, vous devez utiliser une partition. C'est le meilleur choix pour un poste de travail Linux ou un serveur. Le schéma de partition suggéré par le programme d'installation est généralement adéquat sur un bureau Linux mono-utilisateur.
Vous voudrez peut-être utiliser un fichier d'échange si vous exécutez Linux sur une machine virtuelle, sur un petit système embarqué, ou si vous ne voulez tout simplement pas repartitionner votre système Linux existant.
Combien d'espace d'échange ?
Pendant de nombreuses années, le conseil standard concernant la quantité d'espace de swap nécessaire est le double de la RAM physique. Avec les gros disques et les quantités de mémoire dont disposent même les PC les moins chers, cette règle peut être remise en question.
Sur de nombreux systèmes, si vous cochez top ou htop, vous remarquerez peut-être même que votre espace d'échange n'est même pas utilisé du tout si vous configurez votre système de cette façon.
Néanmoins, le double de la mémoire physique est un bon point de départ et une police d'assurance si vous exigez davantage de mémoire. Vous pouvez apporter des modifications à votre système si nécessaire. Si votre système utilise toute votre RAM, l'ordinateur peut rencontrer des problèmes de performances lors de l'utilisation de la mémoire virtuelle.
L'ordinateur peut continuer à permuter, un processus connu sous le nom de thrashing, ce qui le rend insensible. Si vous avez encore un disque dur mécanique, vous pouvez souvent l'entendre accéder constamment.
C'est beaucoup moins un problème de nos jours car la quantité de RAM sur les PC les moins chers est plus que suffisante, et la vitesse des SSD est beaucoup plus rapide que celle des anciens disques durs. C'est encore quelque chose dont vous devez être conscient.
Le moyen le plus simple de résoudre ce problème consiste simplement à ajouter plus de RAM à votre machine. Si ce n'est pas possible, vous pouvez essayer d'ajuster le "swappiness" du noyau Linux.
Le nombre de swappiness détermine combien le noyau puise dans la mémoire virtuelle. Il va de 0 à 100. Le mettre à 0 signifie que Linux n'échangera pas du tout, tandis qu'à 100, il échangera à chaque occasion. La valeur par défaut sur la plupart des systèmes est 60.
Pour modifier temporairement le swappiness, utilisez la commande sysctl :
sudo sysctl vm.swappiness=20
Le "20" dans cette commande sera le numéro d'échange jusqu'à ce que vous redémarriez. Pour le changer définitivement, modifiez le /etc/sysctl.conf fichier en tant que root et placez la ligne, "vm.swappiness=[numéro de swappiness]", où "[numéro de swappiness]" est le numéro de swappiness que vous voulez. Ce sera un palliatif jusqu'à ce que vous puissiez installer plus de RAM.
La mémoire virtuelle assure le bon fonctionnement de votre système Linux
La mémoire virtuelle est un composant des systèmes d'exploitation modernes, y compris Linux, qui assure le bon fonctionnement de votre ordinateur. Vous pouvez utiliser un fichier d'échange, mais la méthode habituelle est une partition dédiée. Vous n'avez pas à y penser autant, mais les partitions d'échange Linux et les fichiers d'échange sont faciles à configurer et à dépanner.
Une grande partie de ces conseils s'applique également à d'autres systèmes, y compris Windows, même si les méthodes de configuration de la mémoire virtuelle sont différentes.