Citrix Hypervisor

Mémoire VM

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éallocation 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 la documentation 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 fluide à l’utilisateur.

  • Lorsque les serveurs sont pleins, DMC vous permet de démarrer davantage 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 maintenant la quantité de mémoire allouée à chaque machine virtuelle entre les valeurs de mémoire minimales et maximales 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 de « mémoire insuffisante ». Pour réduire l’allocation de mémoire existante des machines virtuelles et faire de la place pour davantage de 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.

Remarques :

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 de la mémoire peut être ajoutée/supprimée de la machine virtuelle sans nécessiter de redémarrage. Lorsqu’une machine virtuelle est en cours d’exécution, l’administrateur peut ajuster la plage dynamique. Citrix Hypervisor garantit toujours que la quantité de mémoire allouée à la machine virtuelle reste dans la plage dynamique. Par conséquent, l’ajuster pendant que la machine virtuelle est en cours d’exécution peut amener 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 le min/max dynamique sur la même valeur, obligeant Citrix Hypervisor à s’assurer que cette quantité de mémoire est allouée à la machine virtuelle. Si de nouvelles machines virtuelles doivent démarrer sur des serveurs « complets », les machines virtuelles en cours d’exécution ont leur mémoire « réduite » pour en démarrer de nouvelles. La mémoire supplémentaire requise est obtenue en pressant proportionnellement les machines virtuelles existantes en cours d’exécution dans leurs plages dynamiques prédéfinies

La console DMC vous permet de configurer les niveaux de mémoire minimum et maximum dynamiques, en créant une plage de mémoire dynamique (DMR) dans laquelle la machine virtuelle fonctionne.

  • 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 sur 512 Mo et que la mémoire maximale dynamique a été définie sur 1 024 Mo, cela donne à la machine virtuelle une plage de mémoire dynamique (DMR) de 512 à 1 024 Mo, au sein de laquelle elle fonctionne. Citrix Hypervisor garantit de toujours affecter la mémoire de chaque machine virtuelle dans son DMR spécifié lors de l’utilisation de la console 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 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 pages et autres structures de gestion de la mémoire en conséquence. Cela introduit le concept de plage de mémoire statique au sein de 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 une chaussure particulière, 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. Consultez le tableau des contraintes de mémoire pour plus de détails.

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

Compression automatique des machines virtuelles

  • Si DMC n’est pas activé, lorsque les hôtes sont pleins, les nouveaux démarrages de machines virtuelles échouent avec des erreurs de « 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 manière, les machines virtuelles en cours d’exécution sont compressé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 maximale dynamique

  • 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, si vous allouez trop peu de mémoire :

  • L’utilisation du contrôle dynamique de la mémoire pour réduire la quantité de mémoire physique disponible pour une machine virtuelle peut entraîner un ralentissement de son redémarrage. De même, si vous allouez trop peu de mémoire à une machine virtuelle, elle peut démarrer lentement.

  • La définition de la mémoire dynamique minimale d’une machine virtuelle trop faible peut entraîner de mauvaises performances ou des problèmes de stabilité au démarrage de la machine virtuelle.

Comment fonctionne DMC ?

Grâce à DMC, il est possible de faire fonctionner une machine virtuelle invitée selon l’un des deux modes suivants :

  1. Mode cible : l’administrateur spécifie une cible de 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 quelle quantité de mémoire vous souhaitez qu’un invité utilise. Citrix Hypervisor ajuste l’allocation de mémoire de l’invité pour atteindre 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. La spécification d’une plage dynamique est utile dans les environnements de bureaux virtuels et dans toutes les situations où vous souhaitez que Citrix Hypervisor répartisse la mémoire hôte dynamiquement en réponse à une modification du nombre d’invités ou à une 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 passer du mode cible au mode plage dynamique à tout moment pour tout 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 de 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 des invités sur toutes les valeurs qui satisfont à cette contrainte, sous réserve de contrôles 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. L’éventail des configurations prises en charge dépend du système d’exploitation invité utilisé. Citrix Hypervisor n’empêche pas les administrateurs de configurer des 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, voir Prise en charge des systèmes d’exploitation invités.

Avertissement :

Lors de la configuration de la mémoire invité, 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é chez 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 en dessous du minimum dynamique peut également entraîner des problèmes de stabilité. Les administrateurs sont invités à calibrer soigneusement la taille de leurs machines virtuelles et à s’assurer que leur ensemble d’applications de travail fonctionne de manière fiable au minimum dynamique.

Le minimum dynamique doit être d’au moins 75 % du maximum statique. Un montant inférieur peut entraîner des pannes chez les clients et n’est pas pris en charge.

Commandes xe CLI

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

  1. Recherchez l’UUID de la machine virtuelle requise :

    xe vm-list
    <!--NeedCopy-->
    
  2. Notez l’uuid, puis exécutez la commande param-name=memory-static

    xe vm-param-get uuid=uuid param-name=memory-static-{min,max}
    <!--NeedCopy-->
    

    Par exemple, ce qui suit affiche les propriétés de mémoire maximale statique pour la machine virtuelle dont l’UUID commence par ec77 :

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

    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 commande param-name=memory-dynamic :

  1. Recherchez l’UUID de la machine virtuelle requise :

    xe vm-list
    <!--NeedCopy-->
    
  2. Notez l’uuid, puis exécutez la commande param-name=memory-dynamic :

    xe vm-param-get uuid=uuid param-name=memory-dynamic-{min,max}
    <!--NeedCopy-->
    

    Par exemple, ce qui suit affiche les propriétés de mémoire maximale dynamique pour la machine virtuelle dont l’UUID commence par ec77

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

    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 lorsque vous définissez les paramètres minimum/maximum statiques/dynamiques. 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=value max=value
<!--NeedCopy-->

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

xe vm-memory-dynamic-range-set \
      uuid=uuid min=value \
      max=value
<!--NeedCopy-->

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

xe vm-memory-target-set target=value vm=vm-name
<!--NeedCopy-->

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
<!--NeedCopy-->

Remarques :

  • Pour allouer une quantité spécifique de mémoire à 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.

Mettre à jour les 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 plus d’informations, voir Contraintes de mémoire.

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

  1. Recherchez l’UUID de la machine virtuelle requise :

    xe vm-list
    <!--NeedCopy-->
    
  2. Notez l’uuid, puis utilisez la commande memory-dynamic-{min,max}=value

    xe vm-param-set uuid=uuid memory-dynamic-{min,max}=value
    <!--NeedCopy-->
    

L’exemple suivant modifie le maximum dynamique à 128 Mo :

xe vm-param-set uuid=ec77a893-bff2-aa5c-7ef2-9c3acf0f83c0 memory-dynamic-max=128MiB
<!--NeedCopy-->
Mémoire VM