vSphere Client vous permet d'afficher les informations relatives aux paramètres d'allocation de mémoire et de les modifier. Pour administrer vos ressources mémoire de manière efficace, vous devez être familiarisé avec le dépassement de mémoire, la taxe sur la mémoire inactive et la manière dont les hôtes ESXi réclament la mémoire.

Lorsque vous administrez les ressources mémoire, vous pouvez spécifier l'allocation de la mémoire. Si vous ne personnalisez pas l'allocation de mémoire, l'hôte ESXi utilise les paramètres par défaut, efficaces dans la plupart des situations.

Vous pouvez spécifier l'allocation de mémoire de différentes manières.

  • Utilisez les attributs et fonctions spéciales disponibles via vSphere Client. vSphere Client vous permet de vous connecter à l'hôte ESXi ou au système vCenter Server.
  • Utilisez les paramètres avancés.
  • Utilisez vSphere SDK pour l'allocation de mémoire planifiée.
Note : Dans ce chapitre, « Mémoire » peut désigner la RAM physique ou la mémoire persistante.

Explication de la capacité supplémentaire de mémoire

Un supplément est associé à la virtualisation des ressources en mémoire.

Les machines virtuelles ESXi peuvent entraîner deux types de capacité supplémentaire de mémoire.

  • Temps supplémentaire nécessaire pour accéder à la mémoire d'une machine virtuelle.
  • Espace supplémentaire requis par l'hôte ESXi pour son propre code et ses structures de données, au-delà de la mémoire allouée à chaque machine virtuelle.

La virtualisation de mémoire ESXi ajoute un léger temps supplémentaire lors de l'accès à la mémoire. Le matériel de pagination du processeur utilise directement les tables de pages (tables de pages fantômes pour l'approche logicielle et tables de pages à deux niveaux pour l'approche assistée par le matériel) ; la plupart des accès à la mémoire virtuelle peuvent donc s'exécuter sans supplément de conversion d'adresse.

La capacité supplémentaire de mémoire comporte deux éléments.

  • Un supplément fixe à l'échelle du système pour VMkernel.
  • Capacité supplémentaire pour chaque machine virtuelle.

La capacité supplémentaire de mémoire comprend un espace réservé pour le tampon de trame de la machine virtuelle et diverses structures de données de virtualisation, notamment les tables de page fantômes. La capacité supplémentaire de mémoire dépend du nombre de CPU virtuels et de la mémoire configurée pour le système d'exploitation client

Capacité supplémentaire de mémoire sur les machines virtuelles

Les machines virtuelles nécessitent une certaine quantité de capacité supplémentaire de mémoire disponible pour la mise sous tension. Vous devez connaître la quantité de ce supplément.

La quantité de capacité de mémoire supplémentaire nécessaire pour une machine virtuelle dépend d'un grand nombre de facteurs, y compris du nombre de vCPU, de la taille de la mémoire, du nombre et du type de périphériques, du mode d'exécution du moniteur et de la version de la machine virtuelle. La version de vSphere que vous utilisez peut également avoir une incidence sur la mémoire nécessaire. VMX calcule automatiquement la quantité de capacité de mémoire supplémentaire requise pour une machine virtuelle.

Pour identifier la capacité de mémoire supplémentaire nécessaire pour votre configuration, commencez par mettre sous tension la machine virtuelle en question. Ouvrez le fichier vmware.log. Lorsque la machine virtuelle démarre, la capacité de mémoire supplémentaire nécessaire est inscrite au journal. Effectuez une recherche dans le journal pour le terme VMMEM pour trouver la capacité initiale précise de mémoire supplémentaire réservée pour la machine virtuelle.

Méthode d'allocation de mémoire des hôtes ESXi

Un hôte alloue à chaque machine virtuelle la mémoire spécifiée par le paramètre Limit, sauf si la mémoire est excessivement engagée. Un hôte ESXi n'alloue jamais à une machine virtuelle plus de mémoire que sa capacité de mémoire physique spécifiée.

Par exemple, la limite par défaut (illimitée) ou une limite spécifiée par l'utilisateur (par exemple, 2 Go) peut être attribuée à une machine virtuelle 1 Go. Dans les deux cas, l'hôte ESXi n'alloue jamais plus de 1 Go, la taille de mémoire physique spécifiée pour l'hôte.

Lorsque la mémoire est excessivement engagée, une quantité de mémoire comprise entre la quantité spécifiée par Réservation et celle spécifiée par Limite est allouée à chaque machine virtuelle. La quantité de mémoire attribuée à une machine virtuelle au-delà de sa réservation varie généralement en fonction de la charge mémoire actuelle.

Un hôte détermine l'allocation de chaque machine virtuelle en fonction du nombre de partages qui lui est alloué et d'une estimation de sa récente taille d'ensemble de travail.

  • Partages : Les hôtes ESXi utilisent une stratégie d'allocation de mémoire par partage proportionnel modifiée. Les partages de mémoire donnent droit à une machine virtuelle à disposer d'une fraction de la mémoire physique disponible.
  • Taille d'ensemble de travail : Les hôtes ESXi estiment l'ensemble de travail d'une machine virtuelle en surveillant l'activité de mémoire sur des périodes de temps d'exécution de machine virtuelle successives. Les estimations sont homogénéisées sur plusieurs périodes de temps à l'aide de techniques répondant rapidement aux augmentations de taille d'ensemble de travail et plus lentement aux diminutions de taille de charge de travail.

    Cette approche garantit qu'une machine virtuelle depuis laquelle de la mémoire inactive est réclamée peut atteindre rapidement son allocation complète basée sur un partage lorsqu'elle commence à utiliser la mémoire de manière plus active.

    L'activité mémoire est surveillée afin d'estimer les tailles d'ensemble de travail pour une période par défaut de 60 secondes. Pour modifier cette période par défaut, réglez le paramètre avancé Mem.SamplePeriod. Reportez-vous à la section Définir les attributs d'hôte avancés.

Taxe sur la mémoire pour les machines virtuelles inactives

Si une machine virtuelle n'utilise pas activement toute la mémoire qui lui est actuellement allouée, ESXi demande plus pour de la mémoire inactive que pour de la mémoire active. Ce système est conçu pour empêcher les machines virtuelles d'accumuler de la mémoire inactive.

La taxe sur la mémoire inactive est appliquée progressivement. Le taux effectif de la taxe augmente à mesure que la quantité de mémoire inactive par rapport à la mémoire active d'une machine virtuelle augmente (dans les versions précédentes d'ESXi, qui ne prenaient pas en charge les pools de ressources hiérarchiques, toute la mémoire inactive d'une machine virtuelle était taxée de la même manière).

Vous pouvez modifier le taux de la taxe sur la mémoire inactive à l'aide l'option Mem.IdleTax. Pour contrôler la manière dont le système détermine les allocations de mémoire cible pour les machines virtuelles, utilisez cette option, ainsi que l'attribut avancé Mem.SamplePeriod. Reportez-vous à la section Définir les attributs d'hôte avancés.

Note : Dans la plupart des cas, il n'est ni nécessaire, ni approprié de modifier Mem.IdleTax.

Fichiers d'échange VMX

Les fichiers d'échange de machine virtuelle exécutable (VMX) permettent à l'hôte de réduire considérablement la quantité de capacité supplémentaire de mémoire réservée au processus VMX.

Note : Les fichiers d'échange VMX ne sont pas liés à la fonctionnalité de permutation vers le cache de l'hôte ou aux fichiers d'échange ordinaires de niveau hôte.

ESXi réserve de la mémoire pour la machine virtuelle dans plusieurs buts. La mémoire consacrée aux besoins de certains composants, tels que le moniteur de machine virtuelle (VMM) et les périphériques virtuels, est entièrement réservée lorsqu'une machine virtuelle est sous tension. Cependant, une partie de la capacité supplémentaire de mémoire qui est réservée au processus VMX peut être échangée. La fonction d'échange VMX réduit considérablement la réservation de mémoire VMX (par exemple, la réservation passe d'environ 50 Mo ou plus à environ 10 Mo par machine virtuelle). Cela permet à la mémoire restante d'être échangée lorsque la mémoire de l'hôte est surchargée, ce qui réduit la réservation de la capacité supplémentaire de mémoire pour chaque machine virtuelle.

L'hôte crée automatiquement des fichiers d'échange VMX, à condition que l'espace disque libre soit suffisant lors de la mise sous tension de la machine.

Récupération de mémoire

Les hôtes ESXi peuvent récupérer de la mémoire depuis les machines virtuelles.

Un hôte alloue directement la quantité de mémoire spécifiée par une réservation à une machine virtuelle. Toute quantité de mémoire au-delà de la réservation est allouée à l'aide des ressources physiques de l'hôte ou, lorsqu'aucune ressource physique n'est disponible, l'allocation est traitée à l'aide de techniques spéciales telles que le gonflage ou l'échange. Les hôtes peuvent utiliser deux techniques pour augmenter ou contracter de manière dynamique la quantité de mémoire allouée aux machines virtuelles.

  • Les systèmes ESXi utilisent un pilote de gonflage de mémoire (vmmemctl), chargé sur le système d'exploitation invité s'exécutant sur une machine virtuelle. Reportez-vous à Pilote de gonflage de mémoire.
  • Le système ESXi échange une page depuis une machine virtuelle vers un fichier d'échange serveur sans impliquer le système d'exploitation invité. Chaque machine virtuelle possède son propre fichier d'échange.

Pilote de gonflage de mémoire

Le pilote de gonflage de mémoire (vmmemctl) collabore avec le serveur pour récupérer les pages considérées comme de moindre valeur par le système d'exploitation client.

Le pilote utilise une technique de gonflage propriétaire fournissant des performances prévisibles presque identiques au comportement d'un système natif sous des contraintes de mémoire similaires. Cette technique augmente ou diminue la pression de mémoire sur le système d'exploitation client ; par conséquent, le client utilise ses propres algorithmes de gestion de mémoire. Lorsque la mémoire est faible, le système d'exploitation client détermine les pages à récupérer et, si nécessaire, les permute vers son propre disque virtuel.

Figure 1. Gonflage de mémoire dans le système d'exploitation client

Ce schéma illustre le gonflage de mémoire dans le système d'exploitation client.
Note : Vous devez configurer le système d'exploitation client afin qu'il dispose d'un espace d'échange suffisant. Certains systèmes d'exploitation clients ont des limitations supplémentaires.

Si nécessaire, vous pouvez limiter le nombre de réclamations vmmemctl de mémoire en définissant le paramètre sched.mem.maxmemctl pour une machine virtuelle spécifique. Cette option spécifique la quantité de mémoire maximale (en mégaoctets, Mo) pouvant être réclamée depuis une machine virtuelle. Reportez-vous à la section Paramétrer les attributs avancés de la machine virtuelle.

Partage de mémoire entre les machines virtuelles

De nombreuses charges de travail ESXi offrent la possibilité de partager la mémoire entre les machines virtuelles (et également au sein d'une machine virtuelle unique).

Le partage de mémoire ESXi s'exécute en tant qu'activité d'arrière-plan recherchant les opportunités de partage au fil du temps. La quantité de mémoire économisée varie dans le temps. Pour une charge de travail plutôt constante, la quantité augmente généralement lentement, jusqu'à ce que toutes les opportunités de partage soient exploitées.

Pour déterminer l'efficacité du partage de mémoire pour une charge de travail donnée, tentez d'exécuter la charge de travail et utilisez resxtop ou esxtop pour observer les économies réelles. Pour plus d'informations sur le champ PSHARE du mode interactif, reportez-vous à la page Mémoire.

Utilisez les paramètres avancés Mem.ShareScanTime et Mem.ShareScanGHz pour contrôler la fréquence à laquelle le système balaie la mémoire afin d'identifier les opportunités de partage de mémoire.

Vous pouvez également configurer le partage pour des machines virtuelles individuelles en paramétrant l'option sched.mem.pshare.enable.

En raison de problèmes de sécurité, le partage de pages transparentes entre machines virtuelles est désactivé par défaut et le partage de pages est limité au partage de mémoire entre machines virtuelles. Ce qui signifie que le partage de pages ne se produit pas sur plusieurs machines virtuelles mais uniquement au sein d'une machine virtuelle. Le concept de valeur salt a été introduit pour permettre de résoudre des problèmes que les administrateurs système peuvent rencontrer en matière de sécurité pour le partage de pages transparentes. La valeur salt peut être utilisée pour permettre une gestion des machines virtuelles participant au partage de pages transparentes à un niveau plus granulaire que précédemment. Avec les nouveaux paramètres de valeur salt, les machines virtuelles peuvent partager des pages uniquement si la valeur salt et le contenu des pages sont identiques. Une nouvelle option de configuration de l'hôte Mem.ShareForceSalting peut être configurée pour activer ou désactiver la valeur salt.

Consultez le Attributs avancés dans vSphere pour plus d'informations sur la configuration des options avancées.

Compression de mémoire

ESXi fournit un cache de compression de mémoire permettant d'améliorer les performances de la machine virtuelle lorsque vous utilisez l'engagement excessif de mémoire. La compression de mémoire est activée par défaut. Lorsque la mémoire d'un hôte est excessivement engagée, ESXi compresse les pages virtuelles et les stocke en mémoire.

L'accès à la mémoire compressée est plus rapide que l'accès à la mémoire ayant été permutée vers un disque. La compression de mémoire dans ESXi vous permet donc d'engager excessivement la mémoire sans trop compromettre les performances. Lorsqu'une page virtuelle doit être permutée, ESXi tente tout d'abord de la compresser. Les pages pouvant être compressées à 2 Ko (ou à une taille inférieure) sont stockées dans le cache de compression de la machine virtuelle, ce qui augmente la capacité de l'hôte.

Vous pouvez définir la taille maximale du cache de compression et désactiver la compression de mémoire dans la boîte de dialogue Paramètres avancés de vSphere Client.

Activer ou désactiver le cache de compression de mémoire

La compression de mémoire est activée par défaut. Vous pouvez utiliser l'option Paramètres système avancés dans vSphere Client pour activer ou désactiver la compression de mémoire pour un hôte.

Procédure

  1. Accédez à l'hôte dans vSphere Client.
  2. Cliquez sur Configurer.
  3. Dans Système, sélectionnez Paramètres système avancés.
  4. Localisez Mem.MemZipEnable et cliquez sur le bouton Modifier.
  5. Entrez 1 pour activer ou 0 pour désactiver le cache de compression de mémoire.
  6. Cliquez sur OK.

Définition de la taille maximale du cache de compression de mémoire

Vous pouvez définir la taille maximale du cache de compression de mémoire pour les machines virtuelles de l'hôte.

La taille du cache de compression est définie sous forme de pourcentage de la taille de mémoire de la machine virtuelle. Par exemple, si vous saisissez 20 et que la taille de la mémoire d'une machine virtuelle est de 1000 Mo, ESXi peut alors utiliser jusqu'à 200 Mo de mémoire hôte pour stocker les pages compressées de la machine virtuelle.

Si vous ne définissez pas la taille du cache de compression, ESXi utilise la valeur par défaut (10 pourcent).

Procédure

  1. Accédez à l'hôte dans vSphere Client.
  2. Cliquez sur Configurer.
  3. Dans Système, sélectionnez Paramètres système avancés.
  4. Localisez Mem.MemZipMaxPct et cliquez sur le bouton Modifier.
    La valeur de cet attribut détermine la taille maximale du cache de compression de la machine virtuelle.
  5. Saisissez la taille maximale du cache de compression.
    La valeur correspond à un pourcentage de la taille de la machine virtuelle et doit être comprise entre 5 et 100 %.
  6. Cliquez sur OK.

Mesure et différentiation des types d'utilisation de mémoire

L'onglet Performance de vSphere Client affiche plusieurs mesures pouvant être utilisées pour analyser l'utilisation de la mémoire.

Certaines de ces mesures de mémoire évaluent la mémoire physique client, d'autres mesurent la mémoire machine. Par exemple, la mémoire physique client et la mémoire machine sont deux types d'utilisations de mémoire que vous pouvez examiner à l'aide des mesures de performances. Vous pouvez mesurer la mémoire physique invité à l'aide de la mesure Memory Granted (pour une machine virtuelle) ou Memory Shared (pour un hôte). Toutefois, pour mesurer la mémoire machine, utilisez Memory Consumed (pour une machine virtuelle) ou Memory Shared Common (pour un hôte). Il est important de comprendre la différence conceptuelle entre ces types d'utilisations de mémoire afin de savoir ce qu'évaluent ces mesures et la manière de les interpréter.

VMkernel mappe la mémoire physique client vers la mémoire machine, mais elles ne sont pas toujours mappées l'une par rapport à l'autre. De nombreuses régions de la mémoire physique client peuvent être mappées vers la même région de la mémoire machine (en cas de partage de mémoire) ou des régions spécifiques de la mémoire physique client peuvent ne pas être mappées vers la mémoire machine (lorsque VMkernel échange ou gonfle la mémoire physique client). Dans ces cas, le calcul de l'utilisation de la mémoire physique invité et celui de l'utilisation de la mémoire machine d'une machine virtuelle ou d'un hôte sont différents.

Reportez-vous à l'exemple de la figure qui suit, qui montre l'exécution de deux machines virtuelles sur un hôte. Chaque bloc représente 4 Ko de mémoire et chaque couleur/lettre représente un ensemble de données différent sur un bloc.

Figure 2. Exemple d'utilisation de la mémoire

Ce schéma illustre un exemple de l'utilisation de la mémoire de deux machines virtuelles.

Les mesures de performances des machines virtuelles peuvent être déterminées comme suit :

  • Pour déterminer la mesure Memory Granted (quantité de mémoire physique client mappée vers la mémoire machine) de la machine virtuelle 1, comptez le nombre de blocs de la mémoire physique invité de la machine virtuelle 1 possédant des flèches vers la mémoire machine et multipliez ce nombre par 4 Ko. Étant donné qu'il existe cinq blocs avec des flèches, la mesure Memory Granted est de 20 Ko.
  • La mesure Memory Consumed correspond à la quantité de mémoire machine allouée à la machine virtuelle, comptabilisant les économies depuis la mémoire partagée. Tout d'abord, comptez le nombre de blocs de la mémoire machine possédant des flèches depuis la mémoire physique client de la machine virtuelle 1. Il existe trois blocs de ce type, mais un bloc est partagé avec la machine virtuelle 2. Comptez deux blocs plus la moitié du troisième et multipliez par 4 Ko, soit un total de 10 Ko pour la mesure Memory Consumed.
La différence importante entre ces deux mesures est que la mémoire Memory Granted compte le nombre de blocs comportant des flèches au niveau de la mémoire physique client et la mesure Memory Consumed comptabilise le nombre de blocs comportant des flèches au niveau de la mémoire machine. Le nombre de blocs est différent d'un niveau à l'autre en raison du partage de la mémoire ; les mesures Memory Granted et Memory Consumed sont donc différentes. De la mémoire est économisée grâce au partage ou autres techniques de récupération.
Vous obtenez un résultat similaire lorsque vous déterminez les mesures Memory Shared et Memory Shared Common pour l'hôte.
  • La mesure Memory Shared de l'hôte correspond à la somme de la mesure Memory Shared de chacune des machines virtuelles. Pour calculer la mémoire partagée, examinez la mémoire physique client de chaque machine virtuelle et comptez le nombre de blocs comportant des flèches vers les blocs de mémoire machine possédant eux-mêmes plusieurs flèches pointant dans leur direction. Il existe six de ces blocs dans l'exemple, la mesure Memory Shared de l'hôte est donc de 24 Ko.
  • La mesure Memory Shared Common correspond à la quantité de mémoire machine partagée par les machines virtuelles. Pour déterminer la mémoire commune, examinez la mémoire machine et comptez le nombre de blocs possédant plusieurs flèches en leur direction. Il existe trois de ces blocs ; la mesure Memory Shared Common est donc de 12 Ko.
La mesure Memory Shared concerne la mémoire physique client et examine l'origine des flèches. Toutefois, la mesure Memory Shared Common traite de la mémoire machine et examine la destination des flèches.

Les mesures de mémoire mesurant la mémoire physique client et la mémoire machine peuvent sembler contradictoires. En réalité, elles mesurent différents aspects de l'utilisation de la mémoire d'une machine virtuelle. La compréhension de la différence entre ces mesures vous permet de mieux les utiliser afin de diagnostiquer les problèmes de performances.

Fiabilité de la mémoire

La fiabilité de la mémoire, également appelée isolation des erreurs, permet à ESXi d'arrêter d'utiliser des parties de la mémoire lorsqu'il détermine qu'une défaillance s'est peut-être produite, ou lorsqu'une défaillance s'est réellement produite.

Lorsque suffisamment d'erreurs corrigées sont signalées à une adresse particulière, ESXi arrête d'utiliser cette adresse pour empêcher que l'erreur corrigée ne devienne une erreur non corrigée.

La fiabilité de la mémoire fournit une meilleure fiabilité de VMkernel malgré les erreurs corrigées et non corrigées dans la RAM. Elle permet également au système d'éviter d'utiliser des pages de mémoire susceptibles de contenir des erreurs.

Correction d'une notification d'isolation d'erreur

Avec la fiabilité de la mémoire, VMkernel arrête d'utiliser les pages qui reçoivent une notification d'isolation d'erreur.

L'utilisateur reçoit un événement dans vSphere Client quand VMkernel récupère d'une erreur mémoire non corrigible, quand VMkernel retire un pourcentage important de la mémoire système du fait d'un grand nombre d'erreurs corrigibles ou s'il existe un grand nombre de pages impossibles à retirer.

Procédure

  1. Libérez l'hôte.
  2. Migrez les machines virtuelles.
  3. Exécutez les tests de matériel associés à la mémoire.

Échange système

L'échange système est un processus de récupération de mémoire qui permet de tirer profit des ressources mémoire non utilisées dans l'ensemble d'un système.

L'échange système permet au système de réclamer de la mémoire aux consommateurs qui ne sont pas des machines virtuelles. Si l'échange de système est activé, vous aurez un compromis entre l'impact de récupération de la mémoire depuis un autre processus et la possibilité d'affecter la mémoire à une machine virtuelle qui peut l'utiliser. L'espace nécessaire à l'échange système est de 1 Go.

Vous pouvez réclamer de la mémoire en extrayant les données de la mémoire et en les écrivant dans le stockage qui s'exécute en arrière-plan. L'accès aux données depuis le stockage qui s'exécute en arrière-plan est plus lent que l'accès aux données depuis la mémoire et il est donc important de choisir soigneusement l'emplacement de stockage des données échangées.

ESXi détermine automatiquement où l'échange de système doit être stocké, il s'agit de l'Emplacement préféré du fichier d'échange. Cette décision peut être facilitée par la sélection d'un certain ensemble d'options. Le système sélectionne la meilleure option possible activée. Si aucune des options n'est possible, l'échange de système ne sera pas activé.

Les options disponibles sont les suivantes :

  • Banque de données - Autoriser l'utilisation de la banque de données spécifiée. Notez qu'une banque de données vSAN ou une banque de données VMware vSphere® Virtual Volumes™ ne peut pas être spécifiée pour les fichiers d'échange système.
  • Cache d'échange d'hôte - Autoriser l'utilisation d'une partie du cache d'échange d'hôte.
  • Emplacement préféré des fichiers d'échange - Autoriser l'utilisation de l'emplacement préféré du fichier d'échange configuré pour l'hôte.

Configurer l'échange système

Vous pouvez personnaliser les options qui déterminent l'emplacement d'échange de système.

Conditions préalables

Cochez la case Activé dans la boîte de dialogue Modifier les paramètres d'échange système.

Procédure

  1. Accédez à l'hôte dans vSphere Client.
  2. Cliquez sur Configurer.
  3. Dans Système, sélectionnez Échange système.
  4. Cliquez sur Modifier.
  5. Cochez les cases de chaque option que vous souhaitez activer.
  6. Si vous sélectionnez l'option banque de données, sélectionnez une banque de données dans le menu déroulant.
  7. Cliquez sur OK.