Mémoire virtuelle sous Linux : optimiser la mémoire virtuelle sous Linux

Comprenez le fonctionnement de la mémoire virtuelle sous Linux et optimisez les performances de votre système. Découvrez le processus de pagination, l’allocation mémoire et bien plus encore.

Written By
Ray Fernandez
Ray Fernandez
May 24, 2023
7 minute read
Vast network of interconnected nodes in a digital environment.
Enterprise Networking Planet content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

La mémoire virtuelle est l’un des éléments les plus essentiels d’un système d’exploitation (OS). La mémoire virtuelle de Linux fonctionne différemment de celle des autres OS.

La mémoire virtuelle de Linux utilise différentes techniques, telles que la copie à l’écriture, la pagination à la demande et le vieillissement des pages, afin d’améliorer les performances en déchargeant du disque les processus redondants ou inutiles.

Cet article explique le fonctionnement de la mémoire virtuelle sous Linux et propose un bref tutoriel pour configurer la mémoire virtuelle sur votre propre machine Linux.

Fonctionnement de la mémoire virtuelle sous Linux

On considère généralement que la mémoire virtuelle sert uniquement à étendre la RAM physique d’un système. Pourtant, les techniques et composants de mémoire virtuelle de Linux exécutent des tâches plus sophistiquées.

La mémoire virtuelle de Linux permet à chaque processus de disposer de son propre espace d’adressage privé, même si la mémoire physique disponible ne suffit pas à mapper simultanément toutes les adresses de tous les processus.

Elle y parvient grâce à une technique appelée « pagination ». La pagination consiste essentiellement à déplacer des données de la mémoire physique vers le stockage sur disque, puis inversement, en fonction de leur fréquence d’utilisation.

La pagination attribue également à chaque processus la quantité exacte de mémoire dont il a besoin. Par exemple, lorsqu’un nouveau processus est créé, l’OS crée un espace d’adressage virtuel. Mais comme cet espace d’adressage est « plus grand » que le processus lui-même, l’OS identifie les pages mémoire dont le processus a besoin. Toutes les pages dont le processus n’a pas besoin sont alors conservées sur le disque, dans un fichier ou une partition d’échange.

Techniques de mémoire virtuelle sous Linux

Grâce aux techniques de mémoire virtuelle de Linux, les utilisateurs peuvent exécuter davantage de processus que ce qui serait normalement possible, exécuter des processus simultanément ou utiliser toute la mémoire physique disponible.

Les techniques de mémoire virtuelle de Linux comprennent la copie à l’écriture, la pagination à la demande et le vieillissement des pages.

  • Copie à l’écriture : Lorsqu’il crée de nouvelles pages mémoire, Linux n’alloue pas de nouvelle mémoire physique à une page, mais crée une adresse virtuelle pour celle-ci et la marque comme « partagée ». Lorsque le processus tente d’écrire sur la page, l’OS n’écrit dans la mémoire physique que si la page n’est pas déjà utilisée par un autre processus. Cela permet d’économiser beaucoup de mémoire physique, notamment lorsque plusieurs processus utilisent les mêmes données.
  • Pagination à la demande : Les seules pages mémoire que Linux charge dans la mémoire physique sont celles qu’un processus demande ou tente d’accéder. Cette technique accélère notamment les performances en évitant de charger les pages qui sont rarement nécessaires.
  • Vieillissement des pages : La mémoire virtuelle de Linux suit l’utilisation de chaque page mémoire. Les pages inactives ou moins consultées sont susceptibles d’être transférées sur le disque, tandis que les plus utilisées restent dans la mémoire physique.
Advertisement

Les allocateurs Buddy et Slab

Le noyau Linux possède deux principaux allocateurs mémoire : le Buddy Allocator et le Slab Allocator.

Le Buddy Allocator

Le Buddy Allocator interagit directement avec l’unité de gestion de la mémoire (MMU) et fournit des pages valides lorsque le noyau les demande. Il gère également des listes de pages et suit différentes catégories d’adresses mémoire.

Le Buddy Allocator est un allocateur mémoire polyvalent qui peut être utilisé pour allouer des blocs de mémoire de n’importe quelle taille. Il fonctionne en divisant la mémoire en un arbre binaire de blocs. Chaque fois qu’un processus demande de la mémoire, il recherche le plus petit bloc suffisamment grand pour répondre à la demande et l’alloue au processus.

Le Slab Allocator

Le Slab Allocator est une couche du Buddy Allocator qui permet de créer un cache d’objets en mémoire. Il sert à allouer de la mémoire pour de petits objets.

Le Slab Allocator regroupe les objets de même taille dans un slab. Lorsqu’un processus demande un objet, le Slab Allocator vérifie le cache pour déterminer si l’objet se trouve déjà en mémoire.

Si l’objet est en mémoire, le Slab Allocator le renvoie au processus. Si l’objet ne s’y trouve pas, le Slab Allocator alloue un nouvel objet depuis le cache et le renvoie au processus.

Pages mémoire de Linux

Linux classe les différents types de pages de la mémoire virtuelle comme suit :

  • Pages libres : Pages mémoire qui ne sont utilisées par aucun processus à ce moment-là et qui peuvent être allouées à un processus qui en a besoin.
  • Pages actives : Pages mémoire utilisées par un ou plusieurs processus. Elles ne sont pas disponibles pour d’autres processus tant qu’elles sont utilisées.
  • Pages inactives : Pages mémoire qui ne sont utilisées par aucun processus et qui n’ont pas été modifiées depuis leur dernière lecture sur le disque. Ces pages peuvent être transférées sur le disque afin de libérer de la mémoire physique.
  • Pages modifiées : Pages utilisées par un ou plusieurs processus et qui ont été récemment modifiées. Pour être transférées, ces pages doivent être écrites.
Advertisement

Tâches du noyau Linux

Linux dispose également d’un certain nombre de tâches du noyau dédiées à des aspects spécifiques de la gestion de la mémoire virtuelle.

Par exemple, le gestionnaire de défauts de page, chargé de gérer les défauts de page, est activé lorsqu’un processus tente d’accéder à une page mémoire qui ne se trouve pas dans la mémoire physique. Le gestionnaire de défauts de page charge la page depuis le disque dans la mémoire physique et reprend l’exécution du processus.

Le pager mémoire est chargé de transférer les pages mémoire sur le disque. L’OS l’utilise lorsqu’il doit libérer de la mémoire physique. Le pager mémoire sélectionne les pages à transférer en identifiant celles qui sont peu fréquemment utilisées.

De même, le récupérateur de pages rapatrie dans la mémoire physique les pages mémoire transférées sur le disque. Il est activé lorsqu’un processus demande l’accès à ces pages.

Configurer la mémoire virtuelle sous Linux avec des paramètres ajustables

Les paramètres ajustables sont des réglages du noyau qui peuvent être modifiés pour améliorer les performances de votre système. Ils peuvent être ajustés en temps réel à l’aide de la commande sysctl ou dans le fichier /etc/sysctl.conf.

N’oubliez pas que la modification des paramètres peut avoir des effets négatifs sur votre système et nuire à ses performances.

Examinons les paramètres ajustables les plus importants pour la mémoire virtuelle.

Vm.Swappiness

vm.swappiness est un paramètre qui contrôle avec quelle intensité le noyau transfère les pages mémoire sur le disque.

Lorsqu’il est défini sur la valeur 0, le noyau ne transfère jamais de pages mémoire sur le disque. S’il est défini sur 100, le noyau transfère les pages mémoire dès qu’elles ne sont plus utilisées et aussi rapidement que possible. La valeur définie par défaut est 60.

Par exemple, pour définir vm.swappiness sur 10, vous utiliseriez la commande suivante :

sysctl -w vm.swappiness=10
Advertisement

VM.Dirty_Ratio

Avec ce paramètre, les utilisateurs peuvent contrôler le niveau de remplissage du cache d’écriture différée du noyau avant que celui-ci ne commence à écrire les pages modifiées sur le disque.

Une fois encore, si vm.dirty_ratio est défini sur 0, le noyau n’écrira jamais les pages modifiées sur le disque. Défini sur 100, il écrira les pages modifiées sur le disque dès qu’elles sont modifiées. La valeur par défaut du système est 20.

Pour modifier ce paramètre à 80 en temps réel, avec effet immédiat, utilisez la commande suivante :

sysctl -w vm.dirty_ratio=80

Vm.Dirty_Background_Ratio

vm.dirty_background_ratio définit le niveau de remplissage du cache d’écriture différée du noyau avant que celui-ci ne commence à écrire les pages modifiées sur le disque en arrière-plan.

Défini sur 0, aucune page modifiée ne sera écrite en arrière-plan ; défini sur 100, le noyau écrira les pages modifiées sur le disque en arrière-plan dès qu’elles sont modifiées. La valeur par défaut est 10.

Le code permettant de définir le paramètre sur 25 est le suivant :

sysctl -w vm.dirty_background_ratio=25

Cela fait immédiatement passer le paramètre à 25. Dans cet exemple, le noyau ne commencera à écrire les pages modifiées sur le disque en arrière-plan que lorsque le cache d’écriture différée sera rempli à 25 %. Cela évite que les pages modifiées soient écrites trop tard sur le disque.

Si le cache d’écriture différée est trop rempli, le noyau peut devoir commencer à écrire les pages modifiées sur le disque au premier plan, ce qui entraîne des ralentissements perceptibles.

Quelles sont les bonnes pratiques pour gérer la mémoire sous Linux ?

Il existe plusieurs techniques et bonnes approches pour gérer la mémoire virtuelle sur les systèmes Linux.

Vous pouvez utiliser un fichier ou une partition d’échange, c’est-à-dire une partie de votre disque dur, pour stocker les pages mémoire qui ne sont utilisées par aucun processus. Cela améliore les performances en libérant de la mémoire physique.

Advertisement

Vous pouvez également vérifier la quantité de mémoire physique de votre système (free -h), déterminer la quantité d’espace d’échange dont vous avez besoin (free -h | grep -i swap) et vérifier l’état de votre mémoire virtuelle (free -h | grep -i swap).

D’autres bonnes pratiques courantes, comme maintenir votre ordinateur en bon état, fermer les applications que vous n’utilisez pas et supprimer les fichiers inutiles, peuvent également contribuer à améliorer la gestion de votre mémoire virtuelle.

Il est essentiel de maintenir constamment votre OS Linux à jour, car le noyau Linux publie régulièrement de nouvelles fonctionnalités et des correctifs.

En conclusion : utiliser la mémoire virtuelle de Linux pour améliorer les performances

La mémoire virtuelle de Linux est une fonctionnalité remarquable, mais comprendre son fonctionnement est essentiel pour en améliorer les performances.

Grâce aux informations de cet article — de son fonctionnement à la définition et à la classification des pages, en passant par les techniques utilisées et les paramètres les plus courants pour mieux configurer un système — vous devriez pouvoir commencer à mettre en œuvre cette fonctionnalité précieuse.

N’oubliez jamais que la réinitialisation des paramètres peut nuire à votre système et nécessite des tests, mais qu’en faisant preuve de prudence et en suivant les bonnes étapes, vous pouvez augmenter considérablement les performances.

les meilleurs logiciels de virtualisation de réseau pour améliorer encore les performances des serveurs.

Ray Fernandez

Ray Fernandez

Content Writer

Ray is a Content and Communications Specialist with more than 15 years of experience. He currently works at Publicize and as a contributing writer for TechRepublic, eSecurityPlanet, and ServerWatch in addition to Enterprise Networking Planet. His work has also been published in Microsoft, Venture Beat, Forbes, Entrepreneur, The Sunday Mail, FinTech Times, Spiceworks, Dice Insights, Horasis, the Nature Conservancy, and other leading publications.

Enterprise Networking Planet Logo

Enterprise Networking Planet aims to educate and assist IT administrators in building strong network infrastructures for their enterprise companies. Enterprise Networking Planet contributors write about relevant and useful topics on the cutting edge of enterprise networking based on years of personal experience in the field.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.