57 votes

Éducation vSphere - Quels sont les inconvénients de configurer les VM avec *trop* de RAM ?

La gestion de la mémoire VMware semble être un acte d'équilibre délicat. Avec la RAM de cluster, les pools de ressources, les techniques de gestion de VMware (TPS, ballon, échange d'hôte), l'utilisation de la RAM dans la machine virtuelle, le swapping, les réservations, les parts et les limites, il y a beaucoup de variables.

Je suis dans une situation où les clients utilisent des ressources de cluster vSphere dédiées. Cependant, ils configurent les machines virtuelles comme s'il s'agissait de matériel physique. En conséquence, cela signifie qu'une construction VM standard peut avoir 4 vCPUs et 16 Go ou plus de RAM. Je viens de l'école qui consiste à commencer petit (1 vCPU, RAM minimale), vérifier l'utilisation réelle et ajuster au besoin. Malheureusement, de nombreuses exigences des fournisseurs et des personnes peu familières avec la virtualisation demandent plus de ressources que nécessaire... Je suis intéressé à quantifier l'impact de cette décision.


Quelques exemples d'un cluster "problème".

Résumé du pool de ressources - Semble presque 4:1 sur-assigné. Notez la quantité élevée de RAM ballonnée. entrer la description de l'image ici

Allocation de ressources - La colonne "Allocation en cas de pire scénario" montre que ces VM auraient accès à moins de 50% de leur RAM configurée dans des conditions contraintes. entrer la description de l'image ici

Le graphique d'utilisation de la mémoire en temps réel de la principale VM dans la liste ci-dessus. 4 vCPU et 64 Go de RAM alloués. Il dépasse rarement les 9 Go d'utilisation. entrer la description de l'image ici

Résumé de la même VM entrer la description de l'image ici


  • Quels sont les inconvénients de sur-assigner et de sur-configurer des ressources (en particulier de la RAM) dans les environnements vSphere ?

  • En supposant que les VMs peuvent fonctionner avec moins de RAM, est-il juste de dire qu'il y a des surcoûts à configurer des machines virtuelles avec plus de RAM que ce dont elles ont réellement besoin ?

  • Quel est l'argument contraire à : "si une VM a 16 Go de RAM alloués, mais n'utilise que 4 Go, où est le problème ?" ? Par exemple, les clients doivent-ils être éduqués sur le fait que les VM ne sont pas identiques au matériel physique ?

  • Quelle(s) métrique(s) spécifique(s) devraient être utilisée(s) pour mesurer l'utilisation de la RAM. Suivre les pics "Actifs" par rapport au temps ? Regarder "Consommé" ?


Mise à jour : J'ai utilisé vCenter Operations Manager pour profiler cet environnement et obtenir des détails sur les statistiques du cluster mentionnées ci-dessus. Bien que les choses soient définitivement sur-affectées, les VM sont en réalité tellement surconfigurées en RAM inutile que l'empreinte mémoire réelle (minuscule) ne montre aucun contentieux de mémoire au niveau du cluster/de l'hôte...

Je retiens que les VM devraient vraiment être dimensionnées correctement avec un peu de marge pour la mise en cache au niveau du système d'exploitation. Suraffecter par ignorance ou en raison des "exigences" du fournisseur entraîne la situation présentée ici. Le ballonnement de la mémoire semble mauvais dans tous les cas, car il y a un impact sur les performances, donc le dimensionnement correct peut aider à l'éviter.

Mise à jour 2 : Certaines de ces VM commencent à planter avec :

kernel:BUG: soft lockup - CPU#1 bloqué depuis 71s !

VMware décrit cela comme un symptôme d'une suraffectation importante de la mémoire. Donc je suppose que cela répond à la question.

entrer la description de l'image ici


Rapport "Machines virtuelles surdimensionnées" de vCops... entrer la description de l'image ici

Graphique "Déchets récupérables" de vCops...

entrer la description de l'image ici

0 votes

Si vous configurez les machines virtuelles avec provisionnement mince, la situation ne devrait-elle pas se résoudre automatiquement, puisque les machines virtuelles n'utiliseraient que ce dont elles ont besoin ?

45voto

rahul kumar Points 251

La gestion de la mémoire vSphere est assez décente, bien que les termes utilisés causent souvent beaucoup de confusion.

En général, il convient d'éviter la surallocation de mémoire car cela crée précisément ce type de problème. Cependant, il y a des moments où cela ne peut être évité, donc mieux vaut prévenir que guérir!

Quels sont les inconvénients de la surallocation et de la surconfiguration des ressources (notamment la RAM) dans les environnements vSphere?

Le principal inconvénient de la surallocation des ressources est que en cas de contention, vos hôtes seraient contraints de gonfler, de passer à la mémoire virtuelle ou de planifier/dédupliquer intelligemment en arrière-plan pour donner à chaque VM la RAM dont elle a besoin.

Pour le gonflement, vSphere gonflera une "bulle" de RAM dans une VM choisie, puis donnera cette RAM gonflée à l'invité qui en a besoin. Ce n'est pas vraiment "mauvais" - les VM se volent mutuellement de la RAM, donc il n'y a pas de swapping sur le disque - mais cela pourrait entraîner des alertes incorrectes et des métriques faussées si elles reposent sur l'analyse de l'utilisation de la RAM de la VM, car la RAM ne sera pas marquée comme "gonflée", seulement qu'elle est "utilisée" par le système d'exploitation.

L'autre fonctionnalité que vSphere peut utiliser est le partage transparent des pages (TPS) - qui est essentiellement une déduplication de la RAM. Vshere analysera périodiquement toute la RAM allouée, recherchant des pages dupliquées. Lorsqu'il en trouve, il dédupliquera et libérera les pages dupliquées.

Jetez un coup d'œil au livre blanc sur la gestion de la mémoire de vSphere (PDF) - spécifiquement "La récupération de mémoire dans ESXi" (page 8) - si vous avez besoin d'une explication plus approfondie.

En supposant que les VM peuvent fonctionner avec moins de RAM, peut-on dire qu'il y a un surdépassement de configurer des machines virtuelles avec plus de RAM que nécessaire?

Il n'y a pas de surdépassement visible - vous pouvez allouer 100 Go de RAM sur un hôte avec 16 Go (cependant, cela ne signifie pas que vous le devriez, pour les raisons ci-dessus).

La mémoire totale utilisée par l'ensemble de vos VM est la courbe "Active" affichée dans vos graphiques. Bien sûr, vous ne devriez jamais vous fier uniquement à ce chiffre pour calculer combien vous souhaitez surallouer, mais si vous disposez de mesures historiques comme vous le faites, vous pouvez analyser et le déterminer en fonction de l'utilisation réelle.

La différence entre la RAM "Active" et "Consommée" est discutée dans ce fil de discussion de la communauté VMWare.

Quel contre-argument opposer à : "si une VM a 16 Go de RAM allouée, mais n'utilise que 4 Go, quel est le problème?"? Par exemple, les clients doivent-ils être éduqués?

La réponse courte à cela est oui - les clients doivent toujours être éduqués sur les meilleures pratiques, quel que soit les outils à leur disposition.

Les clients doivent être éduqués pour dimensionner leurs VM en fonction de ce qu'ils utilisent, plutôt que de ce qu'ils veulent. La plupart du temps, les gens vont surestimer leurs VMs simplement parce qu'ils pourraient avoir besoin de 16 Go de RAM, même s'ils fonctionnent historiquement avec seulement 2 Go jour après jour. En tant qu'administrateur de vSphere, vous avez les connaissances, les métriques et le pouvoir de les remettre en question et de leur demander s'ils ont vraiment besoin de la RAM qu'ils ont allouée.

Cela dit, si vous associez la gestion de la mémoire vSphere avec des limites de surallocation soigneusement contrôlées, vous ne devriez pratiquement jamais avoir de problèmes en pratique, la probabilité de manquer de RAM pendant une période prolongée est relativement faible.

En plus de cela, la vMotion automatisée (appelée VMware Distributed Resource Scheduling) est essentiellement un équilibreur de charge pour vos VMs - si une seule VM commence à consommer beaucoup de ressources, le DRS devrait déplacer des VMs pour tirer le meilleur parti des ressources du cluster.

Quelle métrique spécifique devrait être utilisée pour mesurer l'utilisation de la RAM. Suivre les pics de RAM "Active" par rapport au temps?

Principalement couvert ci-dessus - votre principale préoccupation devrait être l'utilisation de la RAM "Active", bien que vous devriez définir soigneusement vos seuils de surallocation de telle sorte que si vous atteignez un certain ratio (c'est un bon exemple, même s'il peut être légèrement obsolète). En général, je resterais certainement dans les 120% de la RAM totale du cluster, mais c'est à vous de décider du ratio avec lequel vous êtes à l'aise.

Quelques bons articles/discussions sur la surallocation de mémoire :

23voto

EtienneT Points 1552

En plus de l'excellent réponse de Craig Watson, je voudrais ajouter ce qui suit:

Sur-engager la mémoire dans VMware n'est pas quelque chose que vous devriez faire volontairement. Cela montre généralement que vous ou votre client sur-sollicitez le matériel.

Si la sur-engagement est le seul choix alors je conseille fortement de mettre en place des règles de priorité. Si quelqu'un est déterminé à donner à une machine virtuelle non critique 16 Go de vRam alors qu'elle n'en a besoin que de 4 Go - au moins placez cette machine virtuelle dans un pool de ressources faibles ou donnez-lui une priorité faible. Vous ne voulez vraiment pas qu'une base de données de production critique soit déplacée par l'hyperviseur. Non seulement les performances vont être mauvaises, mais cela va également saturer les files d'attente d'E/S contre votre stockage de sauvegarde.

Si vous utilisez un stockage ultra-rapide (FusionIO, Violin, SSD locaux, etc.) alors le swapping pourrait ne pas être un gros problème, mais avec un stockage SAN traditionnel vous finirez par affecter chaque machine virtuelle et hôte connecté au même ensemble/array de contrôleurs.

5 votes

Bonne observation sur l'impact du stockage du swapping. Cela explique certains des problèmes de performance de VNX que j'ai rencontrés....

1 votes

Point brillant, je n'ai jamais pensé à prendre en compte l'argument de l'E/S de stockage.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X