Virtualisation : Optimisation de l'utilisation de la mémoire Hyper-V

La mémoire dynamique peut être une fonctionnalité utile, mais vous devez configurer les ordinateurs virtuels et le serveur hôte avec attention.

Brien M. Posey

En matière de charges de travail virtuelles d'hébergement, aucune ressource matérielle n'est probablement aussi importante pour les performances globales que la mémoire physique. Il est essentiel d'allouer de la mémoire de façon à s'assurer que chaque ordinateur virtuel dispose de la mémoire dont il a besoin, mais sans gaspiller de mémoire au cours du processus. Voici quelques éléments essentiels dont vous devez tenir compte lors de l'allocation de la mémoire en vue d'une utilisation avec Microsoft Hyper-V.

Rôle de NUMA

La gestion de la mémoire pour Hyper-V relève d'une compétence artistique. Vous devez vous assurer que chaque ordinateur virtuel dispose d'une quantité de mémoire appropriée. Parallèlement, vous devez également éviter d'attribuer plus de mémoire que nécessaire à un ordinateur virtuel.

Les raisons de ces recommandations semblent évidentes. Si vous allouez trop de mémoire à un ordinateur virtuel, la quantité de mémoire susceptible d'être allouée aux autres ordinateurs virtuels présents sur le même serveur se trouve limitée. De plus, l'allocation d'une trop grande quantité de mémoire à un ordinateur virtuel peut véritablement ralentir ses performances.

La plupart des nouveaux serveurs utilisent une mémoire NUMA (Non-Uniform Memory Access, accès mémoire non uniforme). Cette mémoire est conçue de façon à améliorer les performances en attribuant la mémoire par processeur. Chaque bloc de mémoire dédiée est connu sous le nom de nœud NUMA. Une unité centrale peut accéder à son nœud NUMA local (la mémoire attribuée directement à cette UC) plus rapidement qu'à un nœud NUMA local.

Les versions d'Hyper-V pour Windows Server 2008 et 2008 R2 ne prennent pas en charge directement l'affinité de mémoire par nœud NUMA. En d'autres termes, vous ne pouvez pas configurer directement un ordinateur virtuel de façon à utiliser un nœud NUMA spécifique. D'après certaines sources, cette fonctionnalité sera disponible dans la version Windows Server 8 d'Hyper-V. Toutefois, vous pouvez toujours mettre en œuvre certaines actions pour réduire les risques d'utilisation de nœuds NUMA non locaux par un ordinateur virtuel.

En fait, il suffit de calculer la taille de chaque nœud NUMA. Supposons par exemple que votre serveur soit équipé de deux processeurs huit cœurs et de 128 Go de RAM. Vous pouvez calculer la taille du nœud NUMA en divisant la taille de la mémoire (128 Go) par le nombre de cœurs de l'unité centrale (16). Dans ce cas particulier, la taille d'un nœud NUMA serait de 8 Go.

Hyper-V ne vous permet pas d'attribuer un nœud NUMA spécifique à un ordinateur virtuel spécifique. Toutefois, étant donné que vous savez que ce serveur a une taille de nœud NUMA de 8 Go, vous pouvez en déduire que tout ordinateur virtuel auquel vous aurez attribué plus de 8 Go utilisera la mémoire de plusieurs nœuds NUMA. En limitant à 8 Go ou moins (dans le cas présent) la mémoire attribuée à un ordinateur virtuel, vous augmentez les chances que cet ordinateur virtuel utilise la mémoire depuis un seul nœud NUMA, ce qui a pour effet d'améliorer les performances.

Surcharge d'Hyper-V

Les nœuds NUMA ne sont pas le seul élément à prendre en compte en matière de gestion de mémoire. Lors de la planification des façons d'utiliser la mémoire du serveur hôte, il est extrêmement important de tenir compte de la surcharge liée à la virtualisation. En ce qui concerne la surcharge de virtualisation, vous devez gardez deux points essentiels à l'esprit. Tout d'abord, vous devez réserver de la mémoire pour la partition parente.

Vous devez réserver au moins 300 Mo pour l'hyperviseur et 512 Mo pour le système d'exploitation hôte exécuté sur la partition racine. Toutefois, la plupart des recommandations vous conseillent de réserver 2 Go pour la partition parente.

N'utilisez la partition hôte que pour Hyper-V (bien que vous puissiez exécuter des logiciels de sécurité et d'infrastructure tels que les agents de gestion, les agents de sauvegarde et les pare-feu). Par conséquent, la recommandation de 2 Go suppose que vous n'exécuterez aucune application ni aucun rôle de serveur supplémentaires dans la partition parente.

Hyper-V ne vous permet pas d'allouer de la mémoire directement à la partition hôte. Il utilise essentiellement le reste de mémoire disponible. Vous devez donc penser à garder 2 Go de mémoire du serveur hôte non allouée de façon à ce qu'elle soit disponible pour la partition parente.

Allocation de mémoire pour l'ordinateur invité

En matière de surcharge de virtualisation, vous devez également tenir compte du fait que les ordinateurs virtuels utilisent une petite quantité de mémoire pour les services d'intégration et d'autres processus liés à la virtualisation. La quantité de mémoire est en quelque sorte secondaire. Vous n'aurez donc pas besoin de vous soucier de l'attribution de mémoire supplémentaire pour cela, à moins que vous n'ayez l'intention de fournir à chaque ordinateur virtuel le strict minimum en matière de mémoire.

Les ordinateurs virtuels disposant d'1 Go ou moins de RAM n'utilisent qu'environ 32 Mo de mémoire pour la surcharge liée à la virtualisation. Vous devez ajouter 8 Mo pour chaque gigaoctet de RAM supplémentaire. Par exemple, un ordinateur virtuel avec 2 Go de RAM utiliserait 40 Mo (32 Mo plus 8 Mo) de mémoire pour la surcharge liée à la virtualisation. De la même manière, un ordinateur virtuel avec 4 Go de mémoire perdrait 64 Mo de mémoire au profit de la surcharge.

Mémoire dynamique

Windows Server 2008 R2 SP1 propose une nouvelle fonctionnalité de mémoire dynamique qui permet aux ordinateurs virtuels de consommer la mémoire dynamiquement en fonction de la charge de travail en cours. Cela permet une utilisation excessive de la mémoire physique du serveur de façon à exécuter plus d'ordinateurs virtuels que vous ne pourriez le faire autrement. Malgré les avantages de la mémoire dynamique, il est important de respecter certaines recommandations pour éviter que vos ordinateurs virtuels ne manquent de mémoire.

Tout d'abord, l'utilisation de la mémoire dynamique n'est pas toujours la meilleure option. Vous pouvez activer ou désactiver la mémoire dynamique par ordinateur virtuel. Il est important d'activer la mémoire dynamique uniquement sur les ordinateurs virtuels qui peuvent véritablement en bénéficier.

L'un des éléments les plus importants à prendre en compte est la charge de travail sur vos ordinateurs virtuels. Si une application d'un ordinateur virtuel est conçue de façon à utiliser une quantité fixe de mémoire, il est préférable d'attribuer à cet ordinateur virtuel la quantité exacte de mémoire dont il a besoin au lieu d'utiliser la mémoire dynamique.

Il en va de même pour les applications gourmandes en mémoire. Certaines applications sont conçues de façon à consommer toute la mémoire disponible. De telles applications peuvent rapidement épuiser la mémoire physique d'un serveur si elles sont autorisées à utiliser la mémoire dynamique. Dans ce cas, il est préférable d'attribuer une quantité fixe de mémoire aux ordinateurs virtuels qui exécutent ces types d'applications.

En dernier lieu, les performances d'un serveur peuvent se dégrader si les ordinateurs virtuels tentent d'utiliser la mémoire à partir de plusieurs nœuds NUMA. Par conséquent, si votre serveur utilise la mémoire NUMA et que les performances sont importantes pour vous, il est préférable d'éviter l'utilisation de la mémoire dynamique.

Mémoire vive de démarrage

La mémoire vive de démarrage est l'un des concepts les plus importants à comprendre en matière de mémoire dynamique. Lorsque vous utilisez la mémoire dynamique, vous devez attribuer une valeur de mémoire vive de démarrage à chaque ordinateur virtuel. Cette valeur reflète la quantité de mémoire physique que l'ordinateur virtuel utilisera au début lors de son démarrage. Mais surtout, la mémoire vive de démarrage représente également la quantité minimum de mémoire physique que l'ordinateur virtuel consommera. Un ordinateur virtuel ne peut pas diminuer l'utilisation de la mémoire en dessous de la valeur de la mémoire vive de démarrage.

De ce fait, Microsoft vous recommande d'éviter d'attribuer une grande quantité de mémoire vive de démarrage à l'ordinateur virtuel. Il est préférable de déterminer la mémoire vive de démarrage en fonction du système d'exploitation de l'ordinateur virtuel. Microsoft recommande une mémoire vive de démarrage de 512 Mo pour les ordinateurs virtuels qui exécutent Windows 7, Windows Vista, Windows Server 2008 et Windows Server 2008 R2. Si vos ordinateurs virtuels sont destinés à exécuter Windows Server 2003 ou Windows Server 2003 R2, Microsoft vous recommande 128 Mo de mémoire vive de démarrage.

Pour qu'un ordinateur virtuel utilise la mémoire dynamique, celle-ci doit être prise en charge par le système d'exploitation exécuté sur l'ordinateur virtuel. Windows XP ne prend pas en charge la mémoire dynamique. Si vous tentez d'exécuter Windows XP sur un ordinateur virtuel configuré pour l'utilisation de la mémoire dynamique, le système d'exploitation pourra uniquement accéder à la mémoire vive de démarrage.

Avant de passer à d'autres tâches de configuration, il est important de s'assurer que la mémoire vive de démarrage totale combinée pour tous les ordinateurs virtuels combinés ne dépasse pas la RAM physique installée sur votre serveur. Sinon, vous devrez supprimer certains ordinateurs virtuels ou ajouter de la mémoire.

Vous pouvez modifier la valeur de RAM maximum. Cette valeur représente la quantité maximum de mémoire physique susceptible d'être utilisée par un ordinateur virtuel. Par défaut, Hyper-V définit la quantité maximum de RAM d'un ordinateur virtuel à 64 Go. Vous pouvez définir la RAM maximum sur une valeur inférieure si vous n'avez pas besoin d'une si grande quantité de mémoire physique pour certains de vos ordinateurs virtuels.

Poids de la mémoire

L'intérêt de la mémoire dynamique est qu'elle permet une utilisation excessive de la mémoire. Les ordinateurs virtuels peuvent ainsi accéder à la mémoire dont ils ont besoin lorsqu'ils en ont besoin. L'inconvénient majeur d'une utilisation excessive des ressources matérielles est que vous risquez d'épuiser la ressource. Dans le cas de la mémoire dynamique, il est tout à fait possible que les ordinateurs virtuels utilisent toute la mémoire physique disponible et aient encore besoin de mémoire supplémentaire.

La solution à long terme pour résoudre ce problème consiste à s'assurer que votre serveur est équipé d'une quantité suffisante de mémoire pour répondre aux besoins de l'ordinateur virtuel. Toutefois, donnez priorité à l'utilisation de la mémoire pour mettre en œuvre une solution à court terme.

Presque tous les serveurs hôtes ont des ordinateurs virtuels qui sont plus importants que les autres. Hyper-V vous permet de leur donner la priorité afin qu'en cas de pénurie de mémoire physique, la mémoire soit allouée en premier aux ordinateurs virtuels prioritaires. Vous pouvez rendre prioritaires les besoins d'un ordinateur virtuel en mémoire dynamique grâce à l'ajustement du poids de la mémoire. Les ordinateurs dont le poids de mémoire est plus élevé sont prioritaires sur les ordinateurs virtuels avec des poids de mémoire inférieurs.

Le tampon mémoire doit également être configuré pour chaque ordinateur virtuel qui utilise la mémoire dynamique. Le paramètre de tampon mémoire contrôle la quantité de mémoire que chaque ordinateur virtuel doit tenter de réserver en tant que tampon. Cette valeur est exprimée sous forme de pourcentage. Par exemple, si un ordinateur virtuel utilise 4 Go de mémoire réservée et que le tampon mémoire est défini sur 50 %, l'ordinateur virtuel peut consommer jusqu'à 6 Go de mémoire.

Le tampon mémoire ne garantit pas que la mémoire tampon sera disponible pour un ordinateur virtuel. Il se contente de contrôler la quantité de mémoire qui doit être demandée par l'ordinateur virtuel. Il est important de noter qu'étant donné que le tampon mémoire est indiqué sous forme de pourcentage, la quantité de mémoire mise en tampon change en fonction de la quantité de mémoire utilisée par l'ordinateur virtuel au moment donné. Tous les ordinateurs virtuels qui utilisent la mémoire dynamique commencent par utiliser une quantité de mémoire minimum. Ils ajustent l'utilisation de la mémoire dynamiquement en fonction de la pression exercée par la charge de travail sur la mémoire.

Configuration de la mémoire

Le processus même de configuration de l'utilisation de la mémoire de l'ordinateur virtuel est simple. Ouvrez le Gestionnaire Hyper-V, cliquez avec le bouton droit sur un ordinateur virtuel (étant donné que chaque mémoire de l'ordinateur virtuel est gérée indépendamment). Sélectionnez la commande Paramètres dans le menu contextuel. Lorsque la boîte de dialogue Paramètres s'affiche, cliquez sur Mémoire.

Hyper-V vous donne l'option d'allouer une quantité statique de mémoire à l'ordinateur virtuel ou d'utiliser la mémoire dynamique (voir la figure 1). Si vous choisissez l'option dynamique, vous pouvez ajuster la mémoire vive de démarrage, la RAM maximum, le tampon mémoire et le poids de la mémoire directement dans la boîte de dialogue Paramètres.

You can adjust the memory allocation for a virtual machine through the Settings dialog box

Figure 1 Vous pouvez ajuster l'allocation de mémoire pour un ordinateur virtuel via la boîte de dialogue Paramètres.

Si un serveur hôte a des ressources de mémoire physique limitées, il y a généralement un choix à faire entre l'utilisation de la mémoire statique ou dynamique. La mémoire statique offre généralement de meilleures performances globales (en supposant que la quantité de mémoire allouée soit appropriée). La mémoire dynamique peut être plus délicate à utiliser, mais elle permet une densité supérieure de l'ordinateur virtuel.

Brien Posey

Brien Posey, MVP, est un rédacteur technique indépendant avec à son actif des milliers d'articles et des dizaines de livres. Vous pouvez visiter son site Web à l'adresse brienposey.com.

Contenu associé