Mémoire de machine virtuelle

Lorsque vous créez une machine virtuelle, une quantité fixe de mémoire est allouée à la machine virtuelle. Vous pouvez utiliser Dynamic Memory Control (DMC) pour améliorer l’utilisation de la mémoire physique dans votre environnement Citrix Hypervisor. DMC est une fonctionnalité de gestion de la mémoire qui permet la réaffectation dynamique de la mémoire entre les machines virtuelles.

XenCenter fournit un affichage graphique de l’utilisation de la mémoire dans son onglet Mémoire . Pour plus d’informations, consultez l’aide de XenCenter.

Dynamic Memory Control (DMC) offre les avantages suivants :

  • Vous pouvez ajouter ou supprimer de la mémoire sans redémarrer les machines virtuelles, offrant ainsi une expérience transparente à l’utilisateur.

  • Lorsque les serveurs sont pleins, DMC vous permet de démarrer plus de machines virtuelles sur ces serveurs, ce qui réduit proportionnellement la quantité de mémoire allouée aux machines virtuelles en cours d’exécution.

Qu’est-ce que Dynamic Memory Control (DMC) ?

Citrix Hypervisor DMC fonctionne en ajustant automatiquement la mémoire des machines virtuelles en cours d’exécution, en conservant la quantité de mémoire allouée à chaque machine virtuelle entre les valeurs de mémoire minimale et maximale spécifiées, en garantissant les performances et en permettant une plus grande densité de machines virtuelles par serveur.

Sans DMC, lorsqu’un serveur est plein, le démarrage de machines virtuelles supplémentaires échoue avec des erreurs « mémoire insuffisante ». Pour réduire l’allocation de mémoire de machine virtuelle existante et faire de la place pour d’autres machines virtuelles, modifiez l’allocation de mémoire de chaque machine virtuelle, puis redémarrez la machine virtuelle. Lors de l’utilisation de DMC, Citrix Hypervisor tente de récupérer de la mémoire en réduisant automatiquement l’allocation de mémoire actuelle des machines virtuelles en cours d’exécution dans leurs plages de mémoire définies. Citrix Hypervisor tente de récupérer de la mémoire même lorsque le serveur est plein.

Remarque :

Dynamic Memory Control n’est pas pris en charge avec les machines virtuelles dotées d’un GPU virtuel.

Le concept de plage dynamique

Pour chaque machine virtuelle, l’administrateur peut définir une plage de mémoire dynamique. La plage de mémoire dynamique est la plage dans laquelle la mémoire peut être ajoutée/supprimée de la machine virtuelle sans nécessiter un redémarrage. Lorsqu’une machine virtuelle est en cours d’exécution, l’administrateur peut ajuster la plage dynamique. Citrix Hypervisor garantit toujours de conserver la quantité de mémoire allouée à la machine virtuelle dans la plage dynamique. Par conséquent, l’ajuster pendant l’exécution de la machine virtuelle peut entraîner Citrix Hypervisor à ajuster la quantité de mémoire allouée à la machine virtuelle. Le cas le plus extrême est celui où l’administrateur définit la valeur min/max dynamique min/max, forçant Citrix Hypervisor à s’assurer que cette quantité de mémoire est allouée à la machine virtuelle. Si de nouvelles machines virtuelles sont nécessaires pour démarrer sur des serveurs « complets », leur mémoire est « pressée » pour en démarrer de nouvelles. La mémoire supplémentaire requise est obtenue en serrant proportionnellement les machines virtuelles existantes en cours d’exécution dans leurs plages dynamiques prédéfinies

DMC vous permet de configurer les niveaux de mémoire minimum et maximum dynamiques, créant ainsi une plage de mémoire dynamique (DMR) dans laquelle la machine virtuelle opère.

  • Mémoire minimale dynamique : limite de mémoire inférieure que vous affectez à la machine virtuelle.

  • Limite supérieure dynamique : limite de mémoire supérieure que vous affectez à la machine virtuelle.

Par exemple, si la mémoire minimale dynamique a été définie à 512 Mo et que la mémoire maximale dynamique a été définie à 1 024 Mo, elle donne à la machine virtuelle une plage de mémoire dynamique (DMR) de 512 à 1024 Mo, au sein de laquelle elle fonctionne. Citrix Hypervisor garantit toujours d’attribuer à chaque machine virtuelle la mémoire DMR spécifiée lors de l’utilisation de DMC.

Le concept de plage statique

De nombreux systèmes d’exploitation pris en charge par Citrix Hypervisor ne « comprennent » pas complètement la notion d’ajout ou de suppression dynamique de la mémoire. Par conséquent, Citrix Hypervisor doit déclarer la quantité maximale de mémoire qu’une machine virtuelle est invitée à consommer au moment de son redémarrage. La déclaration de la quantité maximale de mémoire permet au système d’exploitation invité de dimensionner ses tables de page et d’autres structures de gestion de la mémoire en conséquence. Ceci introduit le concept d’une plage de mémoire statique dans Citrix Hypervisor. La plage de mémoire statique ne peut pas être ajustée lorsque la machine virtuelle est en cours d’exécution. Pour un démarrage particulier, la plage dynamique est limitée de manière à être toujours contenue dans cette plage statique. Le minimum statique (limite inférieure de la plage statique) protège l’administrateur et est défini sur la plus faible quantité de mémoire que le système d’exploitation peut exécuter avec Citrix Hypervisor.

Remarque :

Nous vous recommandons de ne pas modifier le niveau minimum statique car le niveau minimum statique est défini au niveau pris en charge par système d’exploitation. Pour plus de détails, reportez-vous au tableau des contraintes de mémoire.

La définition d’un niveau maximum statique supérieur à un maximum dynamique vous permet d’allouer plus de mémoire à une machine virtuelle à l’avenir sans redémarrer la machine virtuelle.

Comportement DMC

Serrage automatique de machines virtuelles

  • Si DMC n’est pas activé, lorsque les hôtes sont pleins, la nouvelle machine virtuelle démarre échoue avec des erreurs « mémoire insuffisante ».

  • Lorsque DMC est activé, même lorsque les hôtes sont pleins, Citrix Hypervisor tente de récupérer de la mémoire en réduisant l’allocation de mémoire des machines virtuelles en cours d’exécution dans leurs plages dynamiques définies. De cette façon, les machines virtuelles en cours d’exécution sont pressées proportionnellement à la même distance entre le minimum dynamique et le maximum dynamique pour toutes les machines virtuelles de l’hôte

Lorsque DMC est activé

  • Lorsque la mémoire de l’hôte est abondante - Toutes les machines virtuelles en cours d’exécution reçoivent leur niveau de mémoire Dynamic Maximum

  • Lorsque la mémoire de l’hôte est rare : toutes les machines virtuelles en cours d’exécution reçoivent leur niveau de mémoire minimum dynamique.

Lorsque vous configurez DMC, n’oubliez pas que l’allocation d’une petite quantité de mémoire à une machine virtuelle peut avoir un impact négatif sur celle-ci. Par exemple, allouer trop peu de mémoire :

  • L’utilisation de Dynamic Memory Control pour réduire la quantité de mémoire physique disponible pour une machine virtuelle peut entraîner un redémarrage lent. De même, si vous allouez trop peu de mémoire à une machine virtuelle, elle peut démarrer lentement.

  • Si vous définissez un minimum de mémoire dynamique pour une machine virtuelle trop faible, cela peut entraîner des problèmes de performances ou de stabilité médiocres au démarrage de la machine virtuelle.

Comment fonctionne DMC ?

En utilisant DMC, il est possible d’utiliser une machine virtuelle invitée dans l’un des deux modes suivants :

  1. Mode cible : l’administrateur spécifie une cible mémoire pour l’invité. Citrix Hypervisor ajuste l’allocation de mémoire de l’invité pour répondre à la cible. La spécification d’une cible est utile dans les environnements de serveurs virtuels et dans les situations où vous savez exactement combien de mémoire vous voulez qu’un invité utilise. Citrix Hypervisor ajuste l’allocation de mémoire de l’invité pour répondre à la cible que vous spécifiez.

  2. Mode Plage dynamique : l’administrateur spécifie une plage de mémoire dynamique pour l’invité. Citrix Hypervisor sélectionne une cible dans la plage et ajuste l’allocation de mémoire de l’invité pour répondre à la cible. Spécifier une plage dynamique est utile dans les environnements de bureau virtuel et dans toutes les situations où vous souhaitez que Citrix Hypervisor repartitionne dynamiquement la mémoire de l’hôte en réponse à l’évolution du nombre d’invités ou à la modification de la pression de la mémoire de l’hôte. Citrix Hypervisor sélectionne une cible dans la plage et ajuste l’allocation de mémoire de l’invité pour répondre à la cible.

Remarque :

Il est possible de changer entre le mode cible et le mode plage dynamique à tout moment pour n’importe quel invité en cours d’exécution. Spécifiez une nouvelle cible ou une nouvelle plage dynamique, et Citrix Hypervisor s’occupe du reste.

Contraintes de mémoire

Citrix Hypervisor permet aux administrateurs d’utiliser toutes les opérations de contrôle de la mémoire avec n’importe quel système d’exploitation invité. Toutefois, Citrix Hypervisor applique la contrainte d’ordre des propriétés mémoire suivante pour tous les invités :

0 memory-static-min memory-dynamic-min memory-dynamic-max memory-static-max

Citrix Hypervisor permet aux administrateurs de modifier les propriétés de la mémoire invitée à toutes les valeurs qui satisfont à cette contrainte, sous réserve de vérifications de validation. Cependant, en plus de la contrainte précédente, nous ne prenons en charge que certaines configurations de mémoire invité pour chaque système d’exploitation pris en charge. La plage de configurations prises en charge dépend du système d’exploitation invité utilisé. Citrix Hypervisor n’empêche pas les administrateurs de configurer les invités pour dépasser la limite prise en charge. Toutefois, il est conseillé aux clients de conserver les propriétés de mémoire dans les limites prises en charge pour éviter les problèmes de performances ou de stabilité. Pour obtenir des instructions détaillées sur les limites de mémoire minimale et maximale pour chaque système d’exploitation pris en charge, reportez-vous à la sectionPrise en charge du système d’exploitation invité.

Avertissement :

Lors de la configuration de la mémoire invitée, nous vous conseillons de NE PAS dépasser la quantité maximale de mémoire physique adressable par votre système d’exploitation. La définition d’un maximum de mémoire supérieur à la limite prise en charge par le système d’exploitation peut entraîner des problèmes de stabilité au sein de votre invité.

Le minimum dynamique doit être supérieur ou égal au quart du maximum statique pour tous les systèmes d’exploitation pris en charge. La réduction de la limite inférieure au-dessous du minimum dynamique peut également entraîner des problèmes de stabilité. Les administrateurs sont encouragés à calibrer soigneusement la taille de leurs machines virtuelles et à s’assurer que leur ensemble fonctionnel d’applications fonctionne de manière fiable au minimum dynamique.

Commandes xe CLI

Afficher les propriétés de mémoire statique d’une machine virtuelle

  1. Trouvez l’uuuid de la machine virtuelle requise :

    xe vm-list
    
  2. Notez l’uuuid, puis exécutez la commandeparam-name=memory-static

    xe vm-param-get uuid=uuid param-name=memory-static-{min,max}
    

    Par exemple, ce qui suit affiche les propriétés de mémoire maximale statiques de la machine virtuelle avec l’uuuid commençant par ec77 :

    xe vm-param-get uuid= \
        ec77a893-bff2-aa5c-7ef2-9c3acf0f83c0 \
        param-name=memory-static-max;
        268435456
    

    L’exemple montre que la mémoire statique maximale pour cette machine virtuelle est de 268 435 456 octets (256 Mo).

Afficher les propriétés de mémoire dynamique d’une machine virtuelle

Pour afficher les propriétés de mémoire dynamique, suivez la procédure ci-dessus mais utilisez la commandeparam-name=memory-dynamic :

  1. Trouvez l’uuuid de la machine virtuelle requise :

    xe vm-list
    
  2. Notez l’uuuid, puis exécutez la commandeparam-name=memory-dynamic :

    xe vm-param-get uuid=uuid param-name=memory-dynamic-{min,max}
    

    Par exemple, ce qui suit affiche les propriétés de mémoire maximale dynamiques pour la machine virtuelle avec uuid commençant par ec77

    xe vm-param-get uuid= \
        ec77a893-bff2-aa5c-7ef2-9c3acf0f83c0 \
        param-name=memory-dynamic-max;
        134217728
    

    L’exemple montre que la mémoire maximale dynamique pour cette machine virtuelle est de 134 217 728 octets (128 Mo).

Mise à jour des propriétés de mémoire

Avertissement :

Utilisez le bon ordre lors de la définition des paramètres minimum/maximum statique/dynamique. En outre, vous ne devez pas invalider la contrainte suivante :

0 memory-static-min memory-dynamic-min memory-dynamic-max memory-static-max

Mettez à jour la plage de mémoire statique d’une machine virtuelle :

xe vm-memory-static-range-set uuid=uuid min=valuemax=value

Mettez à jour la plage de mémoire dynamique d’une machine virtuelle :

xe vm-memory-dynamic-range-set \
      uuid=uuid min=value \
      max=value

La spécification d’une cible est utile dans les environnements de serveurs virtuels et dans toutes les situations où vous savez exactement combien de mémoire vous voulez qu’un invité utilise. Citrix Hypervisor ajuste l’allocation de mémoire de l’invité pour répondre à la cible que vous spécifiez. Par exemple :

xe vm-target-set target=value vm=vm-name

Mettez à jour toutes les limites de mémoire (statique et dynamique) d’une machine virtuelle :

xe vm-memory-limits-set \
      uuid=uuid \
      static-min=value \
      dynamic-min=value \
      dynamic-max=value static-max=value

Remarques :

  • Pour allouer une quantité de mémoire spécifique à une machine virtuelle qui ne change pas, définissez Dynamic Maximum et Dynamic Minimum sur la même valeur.
  • Vous ne pouvez pas augmenter la mémoire dynamique d’une machine virtuelle au-delà du maximum statique.
  • Pour modifier le maximum statique d’une machine virtuelle, vous devez arrêter la machine virtuelle.

Mise à jour des propriétés de mémoire individuelles

Avertissement :

Ne modifiez pas le niveau minimum statique car il est défini au niveau pris en charge par système d’exploitation. Pour de plus amples informations, consultez la section Contraintes de mémoire.

Mettez à jour les propriétés de mémoire dynamique d’une machine virtuelle.

  1. Trouvez l’uuuid de la machine virtuelle requise :

    xe vm-list
    
  2. Notez l’uuuid, puis utilisez la commandememory-dynamic-{min,max}=value

    xe vm-param-set uuid=uuidmemory-dynamic-{min,max}=value
    

L’exemple suivant montre comment modifier le maximum dynamique à 128 Mo :

xe vm-param-set uuid=ec77a893-bff2-aa5c-7ef2-9c3acf0f83c0 memory-dynamic-max=128MiB