Comment décrire les exigences de performance de VMware pour notre application à un administrateur VMware?

23

Souvent, une installation de notre application basée sur Debian et stable s'exécute sur une machine virtuelle - généralement dans VMware ESXi. Dans le cas général, nous n'avons pas de visibilité ou d'influence sur leur environnement de virtualisation et n'avons pas accès, par exemple, au client VMware vCenter ou équivalent. Je me concentre sur VMware ici, car c'est de loin le plus courant que nous voyons.

Nous aimerions:

  • Dites à l'administrateur VMware d'un client: Vous pouvez exécuter notre application dans, par exemple, votre environnement VMware ESX, tant qu'il répond aux critères de performance X, Y et Z.
  • Être en mesure de déterminer si les critères X, Y et Z sont effectivement respectés en continu (par exemple également en ce moment ), même sur un système en cours d'exécution (nous ne pouvons pas arrêter notre application et exécuter des tests de performance, et un test de performance initial ne suffira pas, car les performances dans les environnements virtuels évoluent avec le temps).
  • Ayez confiance que si les critères X, Y et Z sont remplis, nous disposerons de ressources matérielles virtuelles adéquates pour exécuter notre application avec des performances satisfaisantes.

Maintenant, quels sont X, Y et Z?

Nous avons vu maintes et maintes fois que lorsqu'il y a des problèmes de performances, le problème n'est pas avec notre application, mais avec l'environnement de virtualisation. Par exemple, une autre machine virtuelle utilise des tonnes de CPU, de mémoire ou le SAN sur lequel les disques sont réellement stockés sont fortement utilisés par autre chose que notre application. Nous n'avons actuellement aucun moyen de le prouver ou de le réfuter.

Théoriquement, il pourrait également être possible que notre application soit parfois lente ... ;-)

Comment déterminer la cause première de nos problèmes de performances: l'environnement virtuel ou notre application?

Il y a généralement 3 domaines pour les problèmes de performances CPU, mémoire et E / S DISQUE.

CPU

Par exemple, dans VMware, l'administrateur peut spécifier la réservation et la limite, exprimées en MHz, mais est-ce que, par exemple, 512 MHz sur un hôte ESX est exactement le même que 512 MHz sur un autre hôte ESX, éventuellement dans un cluster ESX complètement différent?

Et comment mesurer si nous obtenons réellement cela? Pendant que notre application est en cours d'exécution, nous pouvons peut-être voir que nous sommes à 212% d'utilisation du CPU sur 4 CPU. Est-ce parce que notre application fait beaucoup ou parce qu'une autre machine virtuelle sur le même hôte exécute une tâche gourmande en processeur et utilise tout le processeur?

Mémoire (montgolfière?)

Si nous demandons par exemple 16 Go de RAM, qui est souvent configuré, mais à cause de la montgolfière , nous n'obtenons en fait que 4 Go, et surprise, notre application fonctionne mal.

On peut interroger les outils VMware sur la montgolfière actuelle, mais nous avons constaté qu'elle ment souvent (ou est inexacte au moins). Nous avons vu des exemples où le système d'exploitation pense qu'il y a 16 Go de RAM totale, la somme de la mémoire résidente (RSS) de tous les processus est de 4 Go de RAM, mais il n'y a que 2 Go de RAM libre, même lorsque VMware Tools nous dit qu'il n'y a pas de bulle: - (

De plus, le simple ajout de RSS n'est pas valide, car il pourrait facilement y avoir de la RAM partagée, par exemple une mémoire de copie sur écriture, donc 512 Mo + 512 Mo ne signifient pas nécessairement 1 Go mais pourraient signifier quelque chose de moins. Ainsi, on ne peut pas simplement soustraire RSS de tous les processus pour obtenir une mesure de la quantité de RAM qui devrait être libre et ainsi détecter de manière fiable le gonflement. On peut détecter certains cas de montgolfière, mais il existe d'autres cas où la montgolfière est en vigueur, mais non détectable par cette méthode.

E / S disque

Je suppose que nous pourrions représenter graphiquement au fil du temps le nombre de lectures et d'écritures sur disque, le nombre d'octets lus et écrits et le pourcentage d'attente d'E / S. Mais cela nous donnera-t-il une image précise des E / S disque? J'imagine que s'il y a un mineur Bitcoin en cours d'exécution dans une autre machine virtuelle utilisant tout le processeur, notre% d'attente d'E / S augmentera, même si le SAN sous-jacent donne exactement les mêmes performances, simplement parce que nos ressources de processeur diminuent, et donc l'attente d'E / S ( qui est mesurée en% ) augmente.

Donc, en résumé, quel langage pouvons-nous utiliser pour décrire, par exemple, à un administrateur VMware, quelles performances nous avons besoin, d'une manière portable et mesurable?

Peter V. Mørch
la source
Quelles sont les exigences réelles de votre application? Ce que vous avez décrit jusqu'à présent ne me suffit pas pour évaluer avec précision les besoins en ressources dans mon environnement, et je connais bien VMware. Votre public cible aurait une période encore plus difficile. Dans la pratique, je finis par ignorer les exigences des fournisseurs et mesurer / dimensionner les machines virtuelles en fonction des métriques historiques et des observations à l'aide de vRealize Operations Manager.
ewwhite
1
@ewwhite: Je ne suis en aucun cas un expert en matériel. Mais permettez-moi d'être précis et de dire qu'il fonctionne bien sur un Core i7-5820K avec 8 Go de RAM. Disques magnétiques ca. 2015 va bien, SSD c'est mieux (je peux être plus précis ici, si besoin). Nous avons besoin de 80 Go d'espace disque libre.
Peter V. Mørch
2
En tant qu'administrateur, je dirais: "combien de cœurs dois-je allouer, quelle est l'exigence réelle de RAM, quelle est l'exigence de stockage du point de vue des IOP et du débit, quel est le taux de croissance du stockage, je suis d'accord avec l'allocation dynamique, etc.? "
ewwhite
De quoi votre application a-t-elle besoin du point de vue des performances? Avez-vous des repères pour votre application? Dire "It runs fine with x, y, and z"n'est pas assez précis. Vous devez être en mesure de dire précisément à vos clients ce dont votre application a besoin. S'ils vous donnent ces ressources et que l'application fonctionne mal, la question ne l'est pas "What do we need from a resource perspective?", mais"Why is it performing poorly even though the proper resources have been allocated?"
joeqwerty
1
@ewwhite: "Résolu"? Non. Je n'ai toujours pas l'encantation de 25 mots que je peux donner à un administrateur VMware, puis je peux tester et savoir que nous obtiendrons des performances prévisibles, car, comme vous le savez, "cela dépend". Mais j'ai accepté votre réponse, car je pense maintenant qu'une exigence aussi précise et mesurable n'est pas possible et vos informations contribuent grandement à parler la langue appropriée. À l'avenir, je vais recommander que nous suivions l'itinéraire "Si vous souhaitez que nous dépannions les performances, nous aurons au moins besoin d'afficher l'accès à votre vCenter".
Peter V. Mørch

Réponses:

23
  • Sérieusement, la plupart des administrateurs VMware ne sont pas bons dans ce domaine: mauvaise compréhension de la gestion des ressources, souvent aucune connaissance de Linux (cela aide) et manque de bande passante. Je trouve que la plupart des administrateurs internes ont du mal à maintenir une connaissance approfondie de la virtualisation.

  • Heureusement, il y a un livre que vous pouvez lire !

  • La plupart des environnements VMware ne sont pas excellents: mauvaise conception de cluster, mauvaise planification des ressources , stockage de qualité inférieure (par exemple Synology NAS), HA mal configuré, pas de surveillance ni de correction.

  • VMware en tant qu'organisation nous échoue: ils sont particulièrement mauvais pour diffuser des informations à jour et promouvoir les meilleures pratiques. Les recherches de base pour les questions courantes génèrent des résultats à partir de 2009 et des révisions antérieures de VMware, malgré le fait que les processus et les conceptions ont changé au fil du temps.

Toutes ces choses fonctionneront contre vous.

Vous devez déterminer les besoins réels de votre solution. Être en mesure d'indiquer avec précision que votre appareil nécessite: 2 vCPU, 8 Go de RAM et 500 IOP de performances de stockage iraient un long chemin pour quelqu'un comme moi.

L'autre approche consiste à observer un environnement sain ou idéal et à extrapoler les métriques à partir de là.

Vous avez décrit des problèmes avec certains déploiements. Quels étaient les problèmes et les goulots d'étranglement?


Un exemple de machine virtuelle de bonne taille:

Un serveur Exchange pour une organisation de 300 utilisateurs.

  • Nous avons 6 semaines de cartes thermiques de charge de travail / stress en fonction du temps.
  • 6 processeurs virtuels nous maintiennent au-dessus de la zone de stress avec une salle tampon pour les pointes.
  • 32 Go de RAM nous maintiennent au-dessus de la valeur de stress, mais ce n'est pas un montant déraisonnable au-dessus de ce qui est vraiment nécessaire.

entrez la description de l'image ici

  • Je pourrais récupérer quelques Go de RAM et un vCPU, mais dans l'ensemble, c'est une machine virtuelle efficace.
  • Il serait judicieux d'obtenir ce type de suivi de votre application dans des conditions idéales.

entrez la description de l'image ici


Exemples de surveillance des ressources VM.

Good-ish: - VM est de bonne taille. - Le processeur est surchargé dans le cluster, mais nous ne rencontrons pas de conflit.

entrez la description de l'image ici

Mauvais:

  • La VM n'obtiendra jamais toute la RAM avec laquelle elle est configurée.
  • La VM échange déjà la RAM.
  • Le processeur est largement sur-configuré.

entrez la description de l'image ici

ewwhite
la source
2
Merci, ewwhite pour votre réponse. Pour des raisons d'argument, disons que chez un client, il fonctionne très bien avec: 2 vCPU, 8 Go de RAM et 500 IOP de stockage (d'après votre réponse). Sur un autre site client, nous demandons la même chose et l'obtenons, selon l'administrateur VMware. Cependant, les 2vCPU sont partagés avec 17 autres machines virtuelles gourmandes en CPU et la RAM de 8 Go est également montrée en ballon. Je ne comprends pas très bien les disques VM, alors disons que nous l'obtenons réellement. Notre application fonctionne très bien dans le premier de ces deux environnements ESXi, et horriblement dans l'autre. Comment puis-je mesurer la différence par rapport à l'intérieur des machines virtuelles?
Peter V. Mørch
1
Vous pouvez surveiller " CPU Steal " en haut de votre VM pour voir si le CPU a été trop fortement surchargé. Pour le gonflement / l'échange de RAM, il est difficile de le dire de l'intérieur de la machine virtuelle, à l'exception des mauvaises performances. Vous pouvez cependant demander une vue du vCenter et des ressources pour la machine virtuelle. Voir ci-dessus pour des exemples.
ewwhite
1
Je vais regarder CPU Steal. Nous nous retrouvons parfois avec l'administrateur VMware pointant du doigt notre application et nous pointant du doigt l'environnement lent VMware. Cependant, le plus souvent, nous n'avons même pas accès à vSphere, puis il devient difficile à dépanner, lorsqu'il fonctionne correctement dans d'autres installations. Je suppose qu'une approche pourrait être: "Si vous voulez que nous dépannions les performances, nous aurons au moins besoin d'accéder à votre vCenter"
Peter V. Mørch
3
La plupart des administrateurs VMware ne savent même pas lire ces choses. Je passe beaucoup de temps à nettoyer après eux. En tant que fournisseur, il est difficile de demander un accès ou un aperçu de sa configuration. Mais je pense qu'il serait préférable de solidifier vos exigences, puis de les faire respecter. Bien que je ne recommande généralement pas de définir des réservations, si votre application est critique, cela peut avoir du sens. Ou à tout le moins, définir une "priorité de partage". Que fait l'application?
ewwhite
1
Avez-vous pensé à distribuer cela comme une appliance VMware avec une configuration recommandée petite, moyenne et grande?
ewwhite