Mémoire VM
Lorsque vous créez une machine virtuelle, une quantité fixe de mémoire lui est allouée. Vous pouvez utiliser le contrôle dynamique de la mémoire (DMC) pour améliorer l’utilisation de la mémoire physique dans votre environnement XenServer®. Le 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 la documentation XenCenter.
Le contrôle dynamique de la mémoire (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 utilisateur transparente.
-
Lorsque les hôtes sont pleins, le DMC vous permet de démarrer davantage de machines virtuelles sur ces hôtes, en réduisant proportionnellement la quantité de mémoire allouée aux machines virtuelles en cours d’exécution.
Qu’est-ce que le contrôle dynamique de la mémoire (DMC) ?
Le DMC de XenServer 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 des valeurs minimales et maximales spécifiées, garantissant ainsi les performances et permettant une plus grande densité de machines virtuelles par hôte.
Sans DMC, lorsqu’un hôte 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 des machines virtuelles existantes 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. Lorsque le DMC est utilisé, XenServer 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. XenServer tente de récupérer de la mémoire même lorsque l’hôte est plein.
Remarques :
Le contrôle dynamique de la mémoire 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 de redémarrage. Lorsqu’une machine virtuelle est en cours d’exécution, l’administrateur peut ajuster la plage dynamique. XenServer garantit toujours de maintenir la quantité de mémoire allouée à la machine virtuelle dans la plage dynamique. Par conséquent, l’ajustement de celle-ci pendant que la machine virtuelle est en cours d’exécution peut amener XenServer à 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 à la même valeur, forçant XenServer à s’assurer que cette quantité de mémoire est allouée à la machine virtuelle. Si de nouvelles machines virtuelles doivent démarrer sur des hôtes « pleins », la mémoire des machines virtuelles en cours d’exécution est « compressée » pour en démarrer de nouvelles. La mémoire supplémentaire requise est obtenue en compressant proportionnellement les machines virtuelles en cours d’exécution dans leurs plages dynamiques prédéfinies.
Le DMC vous permet de configurer des niveaux de mémoire minimum et maximum dynamiques, créant ainsi une plage de mémoire dynamique (DMR) dans laquelle la machine virtuelle fonctionne.
-
Mémoire minimale dynamique : une limite de mémoire inférieure que vous attribuez à la machine virtuelle.
-
Limite supérieure dynamique : Une limite de mémoire supérieure que vous attribuez à la VM.
Par exemple, si la mémoire minimale dynamique était définie à 512 Mo et la mémoire maximale dynamique à 1 024 Mo, cela donne à la VM une plage de mémoire dynamique (DMR) de 512 à 1 024 Mo, dans laquelle elle fonctionne. XenServer garantit toujours d’attribuer à chaque VM de la mémoire dans sa 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 XenServer ne « comprennent » pas entièrement la notion d’ajout ou de suppression dynamique de mémoire. Par conséquent, XenServer doit déclarer la quantité maximale de mémoire qu’une VM 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 d’une plage de mémoire statique au sein de XenServer. La plage de mémoire statique ne peut pas être ajustée lorsque la VM est en cours d’exécution. Pour un démarrage particulier, la plage dynamique est contrainte de manière à être toujours contenue dans cette plage statique. Le minimum statique (la limite inférieure de la plage statique) protège l’administrateur et est défini sur la quantité de mémoire la plus faible avec laquelle le système d’exploitation peut fonctionner avec XenServer.
Remarque :
Nous vous recommandons de ne pas modifier le niveau minimum statique, car il 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.
Définir un niveau maximum statique supérieur à un maximum dynamique vous permet d’allouer plus de mémoire à une VM à l’avenir sans redémarrer la VM.
Comportement de la DMC
Compression automatique des VM
-
Si la DMC n’est pas activée, lorsque les hôtes sont pleins, les démarrages de nouvelles VM échouent avec des erreurs de « mémoire insuffisante ».
-
Lorsque la DMC est activée, même lorsque les hôtes sont pleins, XenServer tente de récupérer de la mémoire en réduisant l’allocation de mémoire des VM en cours d’exécution dans leurs plages dynamiques définies. De cette façon, les VM en cours d’exécution sont compressées proportionnellement à la même distance entre le minimum dynamique et le maximum dynamique pour toutes les VM sur l’hôte.
Lorsque la DMC est activée
-
Lorsque la mémoire de l’hôte est abondante - Toutes les VM 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 VM en cours d’exécution reçoivent leur niveau de mémoire minimale dynamique.
Lorsque vous configurez la DMC, n’oubliez pas qu’allouer seulement une petite quantité de mémoire à une VM peut avoir un impact négatif sur celle-ci. Par exemple, allouer trop peu de mémoire :
-
L’utilisation du contrôle de mémoire dynamique pour réduire la quantité de mémoire physique disponible pour une machine virtuelle peut entraîner un redémarrage lent de celle-ci. De même, si vous allouez trop peu de mémoire à une machine virtuelle, elle peut démarrer lentement.
-
Définir un minimum de mémoire dynamique trop bas pour une machine virtuelle peut entraîner des performances médiocres ou des problèmes de stabilité lors du démarrage de la machine virtuelle.
Comment fonctionne le DMC ?
En utilisant le DMC, il est possible de faire fonctionner une machine virtuelle invitée dans l’un des deux modes suivants :
-
Mode Cible : L’administrateur spécifie une cible de mémoire pour l’invité. XenServer ajuste l’allocation de mémoire de l’invité pour atteindre cette cible. La spécification d’une cible est utile dans les environnements de serveurs virtuels et dans les situations où vous savez exactement la quantité de mémoire que vous souhaitez qu’un invité utilise. XenServer ajuste l’allocation de mémoire de l’invité pour atteindre la cible que vous spécifiez.
-
Mode Plage Dynamique : L’administrateur spécifie une plage de mémoire dynamique pour l’invité. XenServer sélectionne une cible dans cette plage et ajuste l’allocation de mémoire de l’invité pour atteindre cette cible. La spécification d’une plage dynamique est utile dans toute situation où vous souhaitez que XenServer repartitionne la mémoire de l’hôte dynamiquement en réponse à un nombre changeant d’invités ou à une pression de mémoire hôte changeante. XenServer sélectionne une cible dans la plage et ajuste l’allocation de mémoire de l’invité pour atteindre cette cible.
Remarque :
Il est possible de passer du mode cible au mode plage dynamique à tout moment pour toute machine virtuelle invitée en cours d’exécution. Spécifiez une nouvelle cible ou une nouvelle plage dynamique, et XenServer s’occupe du reste.
Contraintes de mémoire
XenServer 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é. Cependant, XenServer applique la contrainte d’ordre de propriété de la mémoire suivante pour tous les invités :
0 < memory-static-min <= memory-dynamic-min <= memory-dynamic-max <= memory-static-max
XenServer permet aux administrateurs de modifier les propriétés de la mémoire des invités à 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ée 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é. XenServer n’empêche pas les administrateurs de configurer les invités pour dépasser la limite prise en charge. Cependant, il est conseillé aux clients de maintenir les propriétés de la mémoire dans les limites prises en charge afin d’éviter des problèmes de performances ou de stabilité. Pour des directives détaillées sur les limites de mémoire minimales et maximales pour chaque système d’exploitation pris en charge, consultez Prise en charge des systèmes d’exploitation invités.
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. Définir 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 au moins 75 % du maximum statique pour tous les systèmes d’exploitation pris en charge. Une limite inférieure peut 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 d’applications fonctionne de manière fiable au minimum dynamique.
Commandes CLI xe
Afficher les propriétés de mémoire statique d’une VM
-
Recherchez l’UUID de la VM requise :
xe vm-list <!--NeedCopy--> -
Notez l’UUID, puis exécutez la commande
param-name=memory-staticxe 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 statique maximale pour la VM 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 VM est de 268 435 456 octets (256 Mo).
Afficher les propriétés de mémoire dynamique d’une VM
Pour afficher les propriétés de mémoire dynamique, suivez la procédure ci-dessus mais utilisez la commande param-name=memory-dynamic :
-
Recherchez l’UUID de la VM requise :
xe vm-list <!--NeedCopy--> -
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 dynamique maximale pour la VM 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 dynamique maximale pour cette VM est de 134 217 728 octets (128 Mo).
Mettre à jour les propriétés de la mémoire
Avertissement :
Utilisez le bon ordre lors de la définition des paramètres statiques/dynamiques minimum/maximum. De plus, vous ne devez pas invalider la contrainte suivante :
0 < memory-static-min <= memory-dynamic-min <= memory-dynamic-max <= memory-static-max
Mettre à jour la plage de mémoire statique d’une machine virtuelle :
xe vm-memory-static-range-set uuid=uuid min=value max=value
<!--NeedCopy-->
Mettre à jour la plage de mémoire dynamique d’une machine virtuelle :
xe vm-memory-dynamic-range-set \
uuid=uuid min=value \
max=value
<!--NeedCopy-->
Spécifier une cible est utile dans les environnements de serveurs virtuels, et dans toute situation où vous savez exactement la quantité de mémoire que vous souhaitez qu’un invité utilise. XenServer 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-->
Mettre à 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é de mémoire spécifique à une machine virtuelle qui ne change pas, définissez le maximum dynamique et le minimum dynamique à 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, consultez Contraintes de mémoire.
Mettre à jour les propriétés de mémoire dynamique d’une machine virtuelle.
-
Trouvez l’UUID de la machine virtuelle requise :
xe vm-list <!--NeedCopy--> -
Notez l’UUID, puis utilisez la commande
memory-dynamic-{min,max}=valuexe 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-->