La gestion de la mémoire VMware semble être une loi d'équilibrage délicate. Avec le cluster RAM, les pools de ressources, les techniques de gestion de VMware (TPS, Ballooning, Swaying host), in-invité RAM utilisation, échange, réservations, actions et 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 si elles étaient sur du matériel physique. À son tour, cela signifie une version standard VM peut avoir 4 VCPUS et 16 Go ou plus de RAM. Je viens de l'école de départ petit (1 VCPU, RAM minimal), vérifiant l'utilisation et l'adaptation du monde réel si nécessaire. Malheureusement, de nombreuses exigences du fournisseur et des personnes inconnues 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ématique".
Résumé du pool de ressources - Semble près de 4: 1 surmonté. Notez la grande quantité de RAM ballonné.
Allocation de ressources - La colonne d'allocation pire montre que ces VMS auraient accès à moins de 50% de leurs conditions configurées RAM dans des conditions contraignantes.
Le graphique d'utilisation de la mémoire en temps réel du haut VM dans la liste ci-dessus. 4 VCPU et 64GB RAM attribué. Il est moyen de moins de 9 Go.
Résumé du même VM
Quels sont les inconvénients des ressources de surmonter et de conquéralisation (spécifiquement RAM) dans les environnements vSphere?
En supposant que les VMS puissent courir dans moins de RAM, est-il juste de dire qu'il y a des frais généraux pour configurer des machines virtuelles avec plus de RAM que ce qu'ils réellement ont besoin?
Quel est le contre-argument à: "si un VM a 16 Go de RAM attribué, mais utilise uniquement 4 Go, quel est le problème ??"? Par exemple. Les clients doivent-ils être éduqués que VMS ne sont pas identiques au matériel physique?
Quelle (s) métrique (s) spécifique doit être utilisée pour compteur RAM Utilisation. Suivi des pics de "actif" 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 de cluster énumérées ci-dessus. Bien que les choses soient définitivement surmontées, les ordinateurs virtuels sont en réalité tellement surparavigurés avec inutile RAM que l'empreinte de mémoire réelle (minuscule) ne montre aucune conflit de mémoire au niveau du cluster/hôte ...
My Takeaway est que les VMS devraient vraiment être de bonne taille avec un peu de tampon pour la mise en cache au niveau du système d'exploitation. Surmonter de l'ignorance ou des "exigences" conduit à la situation présentée ici. Le ballon de la mémoire semble être mauvais dans tous les cas, car il y a un impact sur la performance, le dimensionnement de la droite peut donc aider à prévenir cela.
Mise à jour 2 : Certains de ces ordinateurs virtuels commencent à se bloquer avec:
kernel:BUG: soft lockup - CPU#1 stuck for 71s!
VMware décrit ceci en tant que symptôme de l'accomplissement de la mémoire lourde . Donc, je suppose que cela répond à la question.
vcops "Machines virtuelles surdimensionnées" Rapport ...
vcops "gaspillage recouvrement" ...
la gestion de la mémoire de VSphere est assez décente, bien que les termes utilisés entraînent souvent beaucoup de confusion.
En général, la mémoire excessive doit être évitée car elle crée exactement ce type de problème. Cependant, il y a des moments où il ne peut pas être évité, il est donc préférable de prévenir!
Quels sont les inconvénients des ressources de surmonter et de surclure la configuration (spécifiquement RAM) dans les environnements vSphere?
L'inconvénient majeur des ressources excessives est que vous devriez avoir une affirmation, vos hôtes seraient obligés de ballon, d'échanger ou de programmer intelligemment/de dupliquer de manière intelligente dans les coulisses afin de donner à chaque VMRAM Cela a besoin.
Pour la montgolfe, vsphere gonflera un "ballon" de RAM dans une machine virtuelle choisie, puis donne ce ballon RAM à l'invité qui en a besoin. Ce n'est pas vraiment "mauvais" - VMS volera la RAM les uns des autres. Il n'y a donc pas d'échange de disque qui se passe - mais cela pourrait entraîner une alerte mal tirée et des métriques asymétriques si celles-ci s'appuient sur l'analyse du VM RAM Utilisation, comme le RAM ne sera pas marqué comme "ballonné", juste que c'est "en cours d'utilisation" par le système d'exploitation.
L'autre caractéristique que vSphere peut utiliser est le partage de page transparent (TPS) - qui est essentiellement RAM DE DUPLICATION. vSphere scannera périodiquement tous les béliers alloués, à la recherche de pages dupliquées. Lorsque vous avez trouvé, il diminuera et libérera les pages dupliquées.
Jetez un coup d'œil à Blankaper de la gestion de la mémoire de VSphere (PDF) - Spécifiquement "Récupération de la mémoire dans ESXI" (page 8) - Si vous avez besoin d'une explication plus approfondie.
En supposant que les VMS puissent courir dans moins de RAM, est-il juste de dire qu'il y a des frais généraux pour configurer des machines virtuelles avec plus d'RAM qu'au besoin?
Il n'y a pas de surcharge visible - vous pouvez allouer 100 Go de RAM sur un hôte avec 16 Go (toutefois, cela ne signifie pas que vous devrait, pour les raisons ci-dessus).
La mémoire totale utilisée par tous vos VMS est la courbe "active" indiquée dans vos graphiques. Bien sûr, vous ne devriez jamais compter sur ce chiffre lorsque vous calculez à quel point vous souhaitez surmonter, mais si vous avez des mesures historiques que vous le souhaitez, vous pouvez analyser et l'exploiter en fonction de l'utilisation réelle.
La différence entre "actif" et "consommé" RAM est discutée dans cet ensemble Thread de la communauté VMware .
Quel est le contre-argument à: "Si un VM a 16 Go de RAM alloué, mais utilise uniquement 4 Go, quel est le problème ??" ? Par exemple. Les clients doivent-ils être éduqués?
La réponse courte à ceci est Oui - Les clients devraient TOUJOURS être éduqué dans les meilleures pratiques, quels que soient les outils de leur disposition.
Les clients doivent être éduqués pour former leur VMS en fonction de ce qu'ils Utilisez, plutôt que ce qu'ils veulent. Beaucoup de temps, les gens vont exclamer leur VMS juste parce qu'ils Peut-être Besoin de 16 Go de RAM, même s'ils bouchent historiquement sur 2 gb jour après jour. En tant qu'administrateur de VSphere, vous avez les connaissances, les métriques et le pouvoir de les défier et demandez-leur s'ils ont besoin de RAM ils ont alloué.
Cela dit, si vous combinez la gestion de la mémoire de VSphere avec des limites de surcommande soigneusement contrôlées, vous devez rarement avoir un problème dans la pratique, la probabilité de manquer de RAM pendant une période prolongée est relativement éloignée.
En plus de cela, VMotion automatisée (appelé Planification de ressources distribuée par VMware) est essentiellement un équilibreur de charge pour votre VMS - si un seul VM devient une ressource porc, DRS devrait migrer VMS autour de la meilleure utilisation des ressources du cluster.
Quelle métrique spécifique doit être utilisée pour compteur RAM Utilisation. Suivi des pics de "actif" par rapport au temps?
Principalement couvert ci-dessus - votre principale préoccupation devrait être "actif" RAM _ _ Utilisation, bien que vous définissez soigneusement vos seuils surmonter de manière à ce que vous atteigniez un certain rapport ( Ceci est un exemple décent , bien que cela puisse être légèrement dépassé). En règle générale, je resterais certainement à moins de 120% de la RAM Total du cluster, mais à vous de décider de ce que vous êtes à l'aise.
Quelques bons articles/discussions sur la mémoire excédentaire:
En plus de l'excellente réponse de Craig Watson, j'aimerais ajouter ce qui suit:
La mémoire sur-engagement dans VMware n'est pas quelque chose que vous devriez faire exprès. Il montre généralement que vous ou votre client est de la sursouscribe du matériel.
En cas de suralimentation, c'est le seul choix que je fortement Conseiller que vous appliquez des règles prioritaires. Si quelqu'un est plié pour donner un fichier non critique VM 16 Go de VRAM quand il n'en a besoin que de 4 Go - au moins mettre cela VM dans une piscine de ressources basse ou donnez C'est une priorité peu priorité. Vous ne voulez vraiment pas qu'une base de données de production critique soit échancrée par l'hyperviseur. Non seulement les performances vont dans le drain, elle mangera également les files d'attente d'E/S sur votre stockage de backend.
Si vous courez sur le stockage rapide flamboyant (FusionIO, violon, SSD local, etc.), l'échange peut ne pas être une grande préoccupation, mais avec traditionnel SAN STOCKAGE, vous aurez finalement affecter chaque VM et hôte connecté au même tableau/contrôleur.