Wie kann ich einem VMware-Administrator die VMware-Leistungsanforderungen für unsere Anwendung beschreiben?

23

Oft läuft eine Installation unserer debian-stabilen Onsite-Anwendung in einer virtuellen Maschine - normalerweise in VMware ESXi. Im Allgemeinen haben wir keinen Einblick in die Virtualisierungsumgebung oder haben keinen Einfluss darauf und haben keinen Zugriff auf z. B. den VMware vCenter-Client oder einen gleichwertigen Client. Ich konzentriere mich hier auf VMware, da dies bei weitem das am häufigsten auftretende ist.

Wir würden gerne:

  • Informieren Sie den VMware-Administrator eines Kunden: Sie können unsere Anwendung z. B. in Ihrer VMware ESX-Umgebung ausführen, sofern sie die Leistungskriterien X, Y und Z erfüllt.
  • Sie können feststellen, ob die Kriterien X, Y und Z tatsächlich kontinuierlich erfüllt werden (z. B. auch jetzt ), selbst auf einem laufenden System (wir können unsere Anwendung nicht stoppen und Benchmarks ausführen, und ein anfänglicher Benchmark wird nicht ausreichen, da die Leistung in virtuelle Umgebungen ändern sich im Laufe der Zeit).
  • Wenn die Kriterien X, Y und Z erfüllt sind, verfügen wir über ausreichende virtuelle Hardware-Ressourcen, um unsere Anwendung mit zufriedenstellender Leistung auszuführen.

Was sind nun X, Y und Z?

Wir haben immer wieder festgestellt, dass das Problem bei Performance-Problemen nicht bei unserer Anwendung, sondern bei der Virtualisierungsumgebung liegt. Eine andere virtuelle Maschine benötigt z. B. Tonnen von CPU, Arbeitsspeicher oder das SAN, auf dem die Festplatten tatsächlich gespeichert sind, wird von etwas anderem als unserer Anwendung stark beansprucht. Wir haben derzeit keine Möglichkeit, dies zu beweisen oder zu widerlegen.

Theoretisch könnte es auch sein, dass unsere Bewerbung manchmal langsam ist ... ;-)

Wie ermittelt man die Hauptursache für unsere Leistungsprobleme: Virtuelle Umgebung oder unsere Anwendung?

In der Regel gibt es drei Bereiche für Leistungsprobleme: CPU, Arbeitsspeicher und Festplatten-E / A.

Zentralprozessor

In z. B. VMware kann der Administrator Reservation und Limit in MHz angeben, ist jedoch z. B. 512 MHz auf einem ESX-Host genauso wie 512 MHz auf einem anderen ESX-Host, möglicherweise in einem völlig anderen ESX-Cluster?

Und wie misst man, ob wir das tatsächlich bekommen? Während unsere Anwendung ausgeführt wird, können wir möglicherweise feststellen, dass wir auf 4 CPUs eine CPU-Auslastung von 212% haben. Liegt das daran, dass unsere Anwendung viel leistet oder dass eine andere VM auf demselben Host eine CPU-intensive Aufgabe ausführt und die gesamte CPU nutzt?

Gedächtnis (Ballonfahren?)

Wenn wir beispielsweise nach 16 GB RAM fragen, das häufig konfiguriert ist, aber aufgrund der Ballonbildung tatsächlich nur 4 GB zur Verfügung stehen, ist die Leistung unserer Anwendung überraschenderweise schlecht.

Man kann die VMware-Tools nach dem aktuellen Ballooning fragen, aber wir haben festgestellt, dass es oft lügt (oder zumindest ungenau ist). Wir haben Beispiele gesehen, bei denen das Betriebssystem davon ausgeht, dass insgesamt 16 GB RAM vorhanden sind, die Summe des residenten Arbeitsspeichers (RSS) aller Prozesse 4 GB RAM beträgt, aber nur 2 GB RAM frei sind, selbst wenn VMware Tools angibt, dass es 0 Ballooning gibt: - (

Nur RSS zu addieren ist ebenfalls nicht gültig, da es leicht möglich ist, gemeinsam genutzten Arbeitsspeicher (z. B. Copy-on-Write-Speicher) zu verwenden, sodass 512 MB + 512 MB nicht unbedingt 1 GB bedeuten, sondern etwas weniger bedeuten können. Man kann also nicht einfach RSS von allen Prozessen subtrahieren, um ein Maß dafür zu erhalten, wie viel RAM frei sein soll, und so Ballonfahrten zuverlässig erkennen. Man kann einige Fälle von Ballonbildung erkennen, aber es gibt andere Fälle, in denen Ballonbildung wirksam ist, aber mit dieser Methode nicht erkannt werden kann.

Festplatten-E / A

Ich vermute, wir könnten die Anzahl der Lese- und Schreibvorgänge auf der Festplatte, die Anzahl der gelesenen und geschriebenen Bytes und die E / A-Wartezeit in% über die Zeit grafisch darstellen. Aber liefert uns das ein genaues Bild der Festplatten-E / A? Ich stelle mir vor, dass, wenn ein Bitcoin Miner auf einer anderen VM mit der gesamten CPU ausgeführt wird, unsere E / A-Wartezeit in% steigt, auch wenn das zugrunde liegende SAN genau die gleiche Leistung erbringt, einfach weil unsere CPU-Ressourcen ausfallen und daher E / A-Wartezeit ( was in% gemessen wird ) steigt.

In welcher Sprache können wir also beispielsweise einen VMware-Administrator beschreiben, welche Leistung wir benötigen, und zwar portabel und messbar?

Peter V. Mørch
quelle
Was sind die tatsächlichen Anforderungen Ihrer Bewerbung? Was Sie bisher beschrieben haben, reicht mir nicht aus, um die Ressourcenanforderungen in meiner Umgebung genau abzuschätzen, und ich bin mit VMware bestens vertraut. Ihre Zielgruppe würde es noch schwieriger haben. In der Praxis ignoriere ich letztendlich die Anforderungen der Anbieter und messe VMs mit vRealize Operations Manager, die auf historischen Metriken und Beobachtungen basieren, und lege deren Größe fest.
ewwhite
1
@ewwhite: Ich bin keineswegs ein Hardware-Experte. Aber lassen Sie mich spezifisch sein und sagen, dass es gut auf einem Core i7-5820K mit 8 GB RAM läuft . Magnetplatten ca. 2015 sind in Ordnung, SSD ist besser (ich kann hier genauer sein, wenn nötig). Wir benötigen 80 GB freien Speicherplatz.
Peter V. Mørch
2
Als Administrator würde ich sagen: "Wie viele Kerne muss ich zuweisen, wie hoch ist der tatsächliche RAM-Bedarf, wie hoch ist der Speicherbedarf aus Sicht von IOPs und Durchsatz, wie hoch ist die Wachstumsrate des Speichers? Bin ich in Ordnung mit Thin-Provisioning usw.? "
ewwhite
Was benötigt Ihre Anwendung aus Performance-Sicht? Haben Sie Benchmarks für Ihre Anwendung? Sprichwort "It runs fine with x, y, and z"ist nicht präzise genug. Sie müssen Ihren Kunden genau mitteilen können, was Ihre Anwendung erfordert. Wenn sie Ihnen diese Ressourcen geben und die Anwendung schlecht "What do we need from a resource perspective?""Why is it performing poorly even though the proper resources have been allocated?"
funktioniert,
1
@ewwhite: "Gelöst"? Nein. Ich habe immer noch nicht die 25-Wörter-Kodierung, die ich einem VMware-Administrator geben kann, und kann dann testen und feststellen, dass wir eine vorhersehbare Leistung erzielen, da es, wie Sie wissen, "darauf ankommt". Aber ich habe Ihre Antwort akzeptiert, weil ich jetzt denke, dass eine so präzise und messbare Anforderung nicht möglich ist und Ihre Informationen einen großen Beitrag zur richtigen Sprache leisten. In Zukunft werde ich empfehlen, die Route "Wenn Sie möchten, dass wir Probleme mit der Leistung beheben, müssen Sie mindestens den Zugriff auf Ihr vCenter anzeigen" zu verwenden.
Peter V. Mørch

Antworten:

23
  • Im Ernst, die meisten VMware-Administratoren sind nicht gut darin: Schlechtes Verständnis des Ressourcenmanagements, oft keine Linux-Kenntnisse (es hilft) und mangelnde Zeitbandbreite. Ich finde, dass die meisten internen Administratoren Schwierigkeiten haben, umfassende Kenntnisse über Virtualisierung zu erhalten.

  • Zum Glück gibt es ein Buch, das Sie lesen können !

  • Die meisten VMware-Umgebungen sind nicht besonders gut: Schlechtes Cluster-Design, schlechte Ressourcenplanung , minderwertiger Speicher (z. B. Synology NAS), falsch konfigurierter HA, keine Überwachung oder Patches.

  • VMware als Organisation versagt uns: Sie sind besonders schlecht darin, aktuelle Informationen zu verbreiten und Best Practices zu fördern. Die einfache Suche nach häufig gestellten Fragen führt zu Ergebnissen aus 2009 und älteren Versionen von VMware, obwohl sich Prozesse und Designs im Laufe der Zeit geändert haben.

All diese Dinge werden gegen Sie arbeiten.

Sie sollten die tatsächlichen Anforderungen Ihrer Lösung ermitteln. In der Lage zu sein, genau anzugeben, dass Ihre Appliance Folgendes erfordert: 2 vCPU, 8 GB RAM und 500 IOPs Speicherleistung .

Der andere Ansatz besteht darin, eine gesunde oder ideale Umgebung zu beobachten und die Messdaten von dort zu extrapolieren.

Sie haben Probleme mit bestimmten Bereitstellungen beschrieben. Was waren die Probleme und Engpässe?


Ein Beispiel für eine VM in der richtigen Größe:

Ein Exchange-Server für eine Organisation mit 300 Benutzern.

  • Wir haben 6 Wochen Workload / Stress Heatmaps im Vergleich zur Zeit.
  • 6 vCPUs halten uns über der Stresszone mit Pufferraum für Spikes.
  • 32 GB RAM halten uns über dem Stresswert, aber es ist keine unzumutbare Menge über dem, was wirklich benötigt wird.

Bildbeschreibung hier eingeben

  • Ich könnte ein paar GB RAM und eine vCPU zurückfordern, aber alles in allem ist dies eine effiziente VM.
  • Es ist ratsam, diese Art der Überwachung Ihrer Anwendung unter idealen Bedingungen durchzuführen.

Bildbeschreibung hier eingeben


Beispiele für die Überwachung von VM-Ressourcen.

Good-ish: - VM hat die richtige Größe. - Die CPU ist im gesamten Cluster überlastet, es kommt jedoch nicht zu Konflikten.

Bildbeschreibung hier eingeben

Schlecht:

  • VM wird nie den gesamten Arbeitsspeicher erhalten, mit dem sie konfiguriert ist.
  • VM tauscht bereits RAM aus.
  • CPU ist viel zu stark konfiguriert.

Bildbeschreibung hier eingeben

ewwhite
quelle
2
Danke, ewwhite für deine Antwort. Nehmen wir als Argument an, es läuft bei einem Kunden hervorragend mit: 2 vCPU, 8 GB RAM und 500 IOPs Speicherleistung (aus Ihrer Antwort). An einem anderen Kundenstandort fragen wir nach dem gleichen Thema und erhalten es, so der VMware-Administrator. Die 2vCPUs werden jedoch mit 17 anderen CPU-hungrigen VMs gemeinsam genutzt, und der 8-GB-RAM ist ebenfalls überlastet. Ich verstehe VM-Festplatten nicht sehr gut. Nehmen wir also an, wir bekommen sie tatsächlich. Unsere App funktioniert in der ersten dieser beiden ESXi-Umgebungen hervorragend und in der anderen fürchterlich. Wie messe ich den Unterschied von innerhalb der VMs?
Peter V. Mørch
1
Sie können " CPU Steal " oben in Ihrer VM überwachen, um festzustellen, ob die CPU zu stark ausgelastet ist. Beim RAM-Ballooning / Swap ist es schwierig, dies aus der VM heraus zu erkennen, mit Ausnahme der schlechten Leistung. Sie können jedoch eine Ansicht des vCenter und der Ressourcen für die VM anfordern. Beispiele siehe oben.
Ewwhite
1
Ich werde CPU Steal untersuchen. Manchmal zeigt der VMware-Administrator mit den Fingern auf unsere Anwendung und mit den Fingern auf die langsame VMware-Umgebung. In den meisten Fällen haben wir jedoch nicht einmal Sichtzugriff auf vSphere, und es wird schwierig, Fehler zu beheben, wenn dies in anderen Installationen problemlos funktioniert. Ich schätze, ein Ansatz könnte lauten: "Wenn Sie möchten, dass wir Probleme mit der Leistung beheben, müssen Sie mindestens den Zugriff auf Ihr vCenter anzeigen"
Peter V. Mørch,
3
Die meisten VMware-Administratoren wissen nicht einmal, wie sie diese Dinge lesen sollen. Ich verbringe viel Zeit damit, nach ihnen aufzuräumen. Als Anbieter ist es schwierig, Zugang zu oder Einblicke in deren Konfiguration zu erhalten. Aber ich denke, es wäre am besten, Ihre Anforderungen zu festigen und dann durchzusetzen. Ich empfehle normalerweise nicht, Reservierungen vorzunehmen, aber wenn Ihre Anwendung kritisch ist, kann dies sinnvoll sein. Oder zumindest eine "Share-Priorität" setzen. Was macht die Anwendung?
ewwhite
1
Haben Sie darüber nachgedacht, dies als VMware-Appliance mit einer kleinen, mittleren und großen empfohlenen Konfiguration zu vertreiben?
ewwhite