Frage Wie beschreiben Sie die VMware-Leistungsanforderungen für unsere Anwendung an einen VMware-Administrator?


Oft wird eine Installation unserer Debian-Stable-basierten Anwendung vor Ort auf einer virtuellen Maschine ausgeführt - normalerweise in VMware ESXi. Im allgemeinen Fall haben wir keinen Einblick in oder Einfluss auf ihre Virtualisierungsumgebung und haben keinen Zugriff auf z.B. der VMware vCenter-Client oder ein gleichwertiger Ich konzentriere mich hier auf VMware, denn das ist bei weitem das häufigste, was wir sehen.

Wir würden gerne:

  • Informieren Sie den VMware-Administrator eines Kunden: Sie können unsere Anwendung z. Ihre VMware ESX-Umgebung, sofern sie die Leistungskriterien X, Y und Z erfüllt.
  • In der Lage zu bestimmen, ob die Kriterien X, Y und Z tatsächlich kontinuierlich erfüllt sind (z. B. auch jetzt sofort), sogar auf einem laufenden System (wir können unsere Anwendung nicht stoppen und Benchmarks ausführen, und ein anfänglicher Benchmark wird nicht ausreichen, da sich die Leistung in virtuellen Umgebungen im Laufe der Zeit ändert).
  • Vertrauen Sie darauf, dass wir, wenn die Kriterien X, Y und Z erfüllt sind, über ausreichende virtuelle HW-Ressourcen verfügen, um unsere Anwendung mit zufriedenstellender Leistung auszuführen.

Was sind nun X, Y und Z?

Wir haben immer wieder gesehen, dass bei Leistungsproblemen das Problem nicht bei unserer Anwendung liegt, sondern bei der Virtualisierungsumgebung. Z.B. Eine andere virtuelle Maschine verwendet eine Menge CPU, Speicher oder das SAN, auf dem die Festplatten tatsächlich gespeichert sind, werden von etwas anderem als unserer Anwendung stark beansprucht. Gegenwärtig haben wir keine Möglichkeit, dies zu beweisen oder zu widerlegen.

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

Wie ermittelt man die Ursache unserer Performance-Probleme: Virtuelle Umgebung oder unsere Anwendung?

Es gibt typischerweise 3 Bereiche für Leistungsprobleme CPU, Speicher und DISK I / O.

Zentralprozessor

In z.B. VMware der Administrator kann Reservierung und Limit angeben, in MHz ausgedrückt, ist aber z. 512 MHz auf einem ESX-Host genau so wie 512 MHz auf einem anderen ESX-Host, möglicherweise in einem völlig anderen ESX-Cluster?

Und wie misst man, ob wir das überhaupt bekommen? Während unsere Anwendung läuft, können wir vielleicht sehen, dass wir bei 4 CPUs eine CPU-Auslastung von 212% haben. Liegt das daran, dass unsere Anwendung viel tut oder eine andere VM auf demselben Host eine CPU-intensive Task ausführt und die gesamte CPU verwendet?

Speicher (Ballonfahren?)

Wenn wir z.B. 16GB RAM, das ist oft konfiguriert, aber wegen Ballonfahrenwir bekommen tatsächlich nur 4GB, und Überraschung, unsere Anwendung funktioniert schlecht.

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

Außerdem ist das Hinzufügen von RSS zusammen nicht gültig, da es leicht gemeinsam genutzten RAM geben könnte, z. Copy-on-Write-Speicher, also 512MB + 512MB bedeutet nicht unbedingt 1GB sondern könnte etwas weniger bedeuten. Man kann nicht einfach RSS von allen Prozessen subtrahieren, um ein Maß dafür zu erhalten, wie viel RAM frei sein sollte, und dadurch das Aufblähen zuverlässig zu erkennen. Man kann einige Fälle von Ballooning feststellen, aber es gibt andere Fälle, in denen Ballooning wirksam ist, aber mit dieser Methode nicht detektierbar ist.

Datenträger-E / A

Ich denke, wir könnten im Laufe der Zeit die Anzahl der Lese- und Schreibvorgänge auf der Festplatte, die Anzahl der gelesenen und geschriebenen Bytes und die IO Warte% grafisch darstellen. Aber wird uns das ein genaues Bild von Festplatten-I / O geben? Ich stelle mir vor, dass, wenn ein Bitcoin Miner in einer anderen VM mit der gesamten CPU läuft, unsere IO Warte% steigt, auch wenn das zugrundeliegende SAN genau die gleiche Leistung liefert, einfach weil unsere CPU Ressourcen runter gehen und somit IO warten (was in% gemessen wird) geht nach oben.

Also, zusammenfassend, welche Sprache können wir verwenden, um z.B. Ein VMware-Administrator, welche Leistung wir brauchen, auf eine tragbare und messbare Weise?


22
2018-06-18 18:10


Ursprung


Was sind die tatsächlichen Anforderungen Ihrer Anwendung? Was Sie bisher beschrieben haben, reicht für mich nicht aus, um die Ressourcenanforderungen in meiner Umgebung genau zu bestimmen, und ich bin mit VMware vertraut. Ihre Zielgruppe hätte eine noch schwierigere Zeit. In der Praxis beende ich die Anforderungen des Anbieters und messe / bemaße VMs basierend auf historischen Metriken und Beobachtungen mit vRealize Operations Manager. - ewwhite
@ewwhite: Ich bin kein Hardware-Experte. Aber lassen Sie mich etwas konkretisieren und sagen, es läuft gut auf a Core i7-5820K mit 8 GB RAM. Magnetscheiben ca. 2015 ist in Ordnung, SSD ist besser (ich kann hier genauer sein, wenn es sein muss). Wir benötigen 80 GB freien Speicherplatz. - Peter V. Mørch
Als Administrator würde ich sagen: "Wie viele Kerne muss ich zuweisen, was ist die tatsächliche RAM-Anforderung, was ist die Speicheranforderung von einer IOPs und Durchsatzperspektive, was ist die Wachstumsrate des Speichers, bin ich okay 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 sagen können, was Ihre Anwendung erfordert. Wenn sie Ihnen diese Ressourcen geben und die Anwendung schlecht funktioniert, dann ist die Frage nicht "What do we need from a resource perspective?", aber "Why is it performing poorly even though the proper resources have been allocated?" - joeqwerty
@ewwhite: "Gelöst"? Nein. Ich habe immer noch nicht die 25-Wörter-Enkantation, die ich einem VMware-Administrator geben kann, und bin dann in der Lage zu testen und zu wissen, dass wir eine vorhersehbare Leistung bekommen werden, weil, wie Sie wissen, "es abhängt". Aber ich habe Ihre Antwort akzeptiert, weil ich der Meinung bin, dass eine solche präzise und messbare Anforderung nicht möglich ist und Ihre Informationen einen langen Weg zum Sprechen der richtigen Sprache bedeuten. In Zukunft werde ich empfehlen, dass wir die "Wenn Sie möchten, dass wir die Leistung beheben, müssen wir mindestens Zugriff auf Ihre vCenter-Route anzeigen". - Peter V. Mørch


Antworten:


  • Im Ernst, die meisten VMware-Administratoren sind nicht gut darin: Schlechtes Verständnis für Ressourcenmanagement, oft kein Linux-Wissen (es hilft) und fehlende Zeitbandbreite. Ich finde, dass die meisten internen Administratoren Schwierigkeiten haben, tiefes Virtualisierungswissen zu bewahren.

  • Glücklicherweise, Da ist ein Buch, das du lesen kannst!

  • Die meisten VMware-Umgebungen sind nicht besonders gut: Schlechtes Cluster-Design, schlechte Ressourcenplanung, Substandard-Speicher (d. h. Synology NAS), falsch konfigurierter HA, keine Überwachung oder Patching.

  • VMware als Organisation versagt uns: Sie sind besonders schlecht darin, aktuelle Informationen zu verbreiten und bewährte Verfahren zu fördern. Einfache Suchen nach häufig gestellten Fragen generieren Ergebnisse aus 2009 und älteren Versionen von VMware, trotz der Tatsache, dass sich Prozesse und Designs im Laufe der Zeit geändert haben.

All diese Dinge werden gegen dich arbeiten.

Sie sollten die tatsächlichen Anforderungen Ihrer Lösung ermitteln. Sie können genau angeben, dass Ihr Gerät Folgendes benötigt: 2 vCPU, 8 GB RAM und 500 IOPs Speicherleistung würde einen langen Weg zu jemandem wie mir gehen.

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

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


Ein Beispiel für eine recht große VM:

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

  • Wir haben 6 Wochen Workload / Stress Heatmaps gegen die Zeit.
  • 6 vCPUs halten uns über der Stresszone mit Pufferraum für Spikes.
  • 32GB RAM hält uns über dem Stresswert, ist aber nicht unangemessen höher als das, was wirklich benötigt wird.

enter image description here

  • Ich könnte ein paar GB RAM und eine vCPU zurückfordern, aber alles in, das ist eine effiziente VM.
  • Es wäre ratsam, diese Art der Überwachung Ihrer Anwendung unter idealen Bedingungen zu erhalten.

enter image description here


Beispiele für die VM-Ressourcenüberwachung

Gut-ich: - Die VM ist richtig groß. - CPU ist über den Cluster hinweg überlastet, aber wir haben keine Konkurrenz.

enter image description here

Schlecht-isch:

  • VM wird nicht immer den gesamten Arbeitsspeicher erhalten, mit dem es konfiguriert ist.
  • VM tauscht bereits RAM aus.
  • CPU ist viel zu überkonfiguriert.

enter image description here


23
2018-06-18 18:30



Danke, Ewwhite für deine Antwort. Um es kurz zu machen, lassen Sie uns sagen, dass es bei einem Kunden sehr gut läuft mit: 2 vCPU, 8GB RAM und 500 IOPs Speicherleistung (aus Ihrer Antwort). Bei einer anderen Kundenseite bitten wir um dasselbe und bekommen das laut dem VMware-Administrator. Die 2vCPUs werden jedoch mit 17 anderen CPU-hungrigen VMs geteilt und der 8GB RAM ist ebenfalls aufgebläht. Ich verstehe VM-Festplatten nicht sehr gut, also sagen wir, wir bekommen das tatsächlich. Unsere App funktioniert in der ersten dieser beiden ESXi-Umgebungen hervorragend und in der anderen schrecklich. Wie kann ich den Unterschied zwischen den VMs messen? - Peter V. Mørch
Sie können überwachen "CPU stehlen"im oberen Bereich Ihrer VM, um zu sehen, ob die CPU zu stark überlastet war. Für RAM-Ballooning / Swapping ist es schwierig, innerhalb der VM zu erkennen, außer der schlechten Performance. Sie können nach einer Ansicht des vCenter und Ressourcen für die VM, siehe oben für Beispiele. - ewwhite
Ich werde in CPU Steal schauen. Manchmal enden wir damit, dass der VMware-Administrator mit der Finger auf unsere Anwendung zeigt und wir auf die langsame VMware-Umgebung zeigen. In den meisten Fällen haben wir jedoch nicht einmal Zugriff auf vSphere und es ist schwierig, Fehler zu beheben, wenn dies in anderen Installationen problemlos funktioniert. Ich denke, ein Ansatz könnte lauten: "Wenn Sie möchten, dass wir die Leistung beheben, benötigen wir mindestens Zugriff auf Ihr vCenter" - Peter V. Mørch
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, nach Zugang oder Einsicht in ihre Einrichtung zu fragen. Aber ich denke, es wäre am besten, Ihre Anforderungen zu verfestigen und dann durchzusetzen. Normalerweise rate ich nicht, Reservierungen vorzunehmen. Wenn Ihre Anwendung jedoch kritisch ist, kann dies sinnvoll sein. Oder zumindest eine "Aktienpriorität" festlegen. Was macht die Anwendung? - ewwhite
Haben Sie darüber nachgedacht, dies als VMware Appliance mit einer kleinen, mittleren und großen empfohlenen Konfiguration zu verteilen? - ewwhite