Langzeit-Performanceanalyse von Hyper-V Hosts und grafische Auswertung mit PAL
Wir haben in letzter Zeit öfters Anfragen von Technikern, die mit einem oder mehreren Hyper-V Hosts Performance-Probleme haben oder sich das Verhalten von gewissen Vorgängen nicht erklären können. Wir haben uns die “Problemkinder” dann angeschaut und konnten auch oftmals die eine oder andere Bremse lösen, manchmal lässt sich das Problem aber nur bedingt eingrenzen, eine genaue Bestimmung des Problems ist hier nicht möglich.
Unser Vorgehen bei einem solchen Problem ist die Aufnahme von Leistungsdaten auf dem oder den Systemen und eine anschließende Auswertung mit dem Performance Analysis of Logs, kurz PAL. Dieses kleine, aber sehr mächtige Tool ist in der Lage, vorhandene Messwerte zu analysieren, sie zu bewerten und grafisch in einem Report auszugeben. Diese Vorgehensweise möchte ich hier einmal näher erklären.
Die Vorgehensweise bei einer Analyse
Mit Hilfe der Leistungsüberwachung auf einem Host (unter Verwaltung zu finden) wird eine Leistungsüberwachung gestartet, die für einen definierten Zeitraum ein Logfile erstellt und vorher definierte Indikatoren abfragt und protokolliert. Dieses Logfile wird später mit dem PAL analysiert und ausgewertet.
Der Download von PAL und die Voraussetzungen
PAL kann frei über Codeplex bezogen werden:
Microsoft Codeplex: Performance Analysis of Logs (PAL) Tool
Voraussetzungen für die Nutzung des Programms sind
- PowerShell 2.0 oder höher
- .Net Framework 3.5 SP1
- Microsoft Chart Controls für .NET Framework 3.5
Es ist nur dann möglich das Programm zu nutzen, wenn man die System-Lokalität auf English-US stellt, da scheinbar gewisse Parameter oder Namen genutzt werden, die nur in dieser Sprache zur Verfügung stehen. Ich habe es mit einem deutschen System probiert, die Analyse startet erst gar nicht, sondern es erscheint direkt eine Fehlermeldung. Eine Umstellung der System-Lokalität habe ich nicht gemacht, ich habe mir für die Auswertung ein Server 2008 R2 SP1 in Englisch installiert, damit hat die Analyse problemlos funktioniert.
Wichtige Information: Nur die Maschine, die die Analyse der Messwerte mit PAL übernimmt muss eine English-US-Lokalität haben, die Erstellung der Performance-Messwerte kann auf einem deutschsprachigem System passieren.
Die Erstellung einer Messung
Das erste Fenster, was man nach dem Aufruf der Leistungsüberwachung sieht, zeigt den Verlauf der CPU-Auslastung im Host:
Wir wechseln zu “Sammlungssätze”, und erstellen mit einem Rechtsklick unter “Benutzerdefiniert” einen neuen Sammlungssatz:
Wir wählen die folgenden Einstellungen:
Im nächsten Fenster wählen wir “Hinzufügen” und können nun aus allen zur Verfügung stehenden Indikatoren wählen.
Die Frage, dies sich vielen nun stellt, ist die, welche Indikatoren sinnvoll sind und was wofür genutzt wird. Hier kommt PAL das erste Mal mit einer Empfehlung. Wenn man PAL aufruft, erscheint das folgende Fenster mit einer Begrüßung.
Im Reiter “Threshold File” gibt es einige Vorlagen, unter anderem die Vorlage “Microsoft Hyper-V R2 SP1”.
Wenn wir diesen Eintrag auswählen und auf “Edit” klicken, bekommen wir eine Übersicht über die Indikatoren, die mit dieser Vorlage ausgewertet werden. Wenn man sich die Gruppen aufklappt und einen Indikator markiert, wird rechts eine Beschreibung angezeigt, weiterhin werden teilweise Empfehlungen aufgeführt. Bei “Cluster Shared Volumes” => “Cluster Shared Volumes IO Read Bytes” sieht das wie folgt aus:
Eine komplette Liste der Indikatoren sieht wie folgt aus:
Auf einem englischen System fangen die einzelnen Gruppen fast alle mit “Hyper-V …” an, auf einem deutschen System wurde dies leider nicht so übernommen, dort sind die Gruppen teilweise recht schwer zu finden. Aus diesem Grund hier eine Liste mit den deutschen Namen, damit diese einfacher zu finden sind:
- Cache
- Freigegebene Clustervolumes
- Hyper-V-Ausgleichsmodul für dynamischen Arbeitsspeicher
- Dynamischer Hyper-V-Arbeitsspeicher – virtueller Computer
- Logischer Prozessor für Hyper-V-Hypervisor
- Hyper-V-Hypervisor-Partition
- Hyper-V-Hypervisorstammpartition
- Virtueller Prozessor des Hyper-V-Hypervisorstamms
- Virtueller Prozessor von Hyper-V-Hypervisor
- Hyper-V-Hypervisor
- Hyper-V – Integritätszusammenfassung
- Virtueller Hyper-V-Netzwerkadapter
- Virtuelles Hyper-V-Speichergerät
- Virtueller Hyper-V-Switch
- Hyper-V VM-VID-NUMA-Knoten
- Hyper-V VM-VID-Partition
- Logischer Datenträger
- Arbeitsspeicher
- Network Inspection System
- Netzwerkschnittstelle
- Auslagerungsdatei
- Physikalischer Datenträger
- Prozess
- Prozessorinformationen
- Prozessor
- RemoteFX Root GPU Management
- Server
- System
Export und Import von einer Vorlagen-Datei
Man muss sich die oben aufgelisteten Indikatoren nicht einzeln heraussuchen, die im PAL hinterlegten Einträge können exportiert und auf Host wieder importiert werden, das spart Zeit und Sucherei. Im PAL unter “Threshold File” wählen wir die Vorlage “Microsoft Hyper-V R2 SP1” aus und klicken auf “Export to Perfmon template file…”.
Die exportierte XML-Datei kopieren wir nun auf unseren Hyper-V Host und öffnen dort die Leistungsüberwachung. Unter “Sammlungssätze” => “Benutzerdefiniert” wählen wir “Neu” => “Sammlungssatz”.
Wir geben dem Sammlungssatz einen Namen und wählen die Option “Aus einer Vorlage erstellen”.
Im nächsten Fenster klicken wir auf “Durchsuchen…” und wählen die zuvor erstellte XML-Datei aus
Ein Klick auf “Fertig stellen” erstellt unsere “Hyper-V Messung”. In den Eigenschaften können wir bestimmte Optionen anpassen
Was ich persönlich immer direkt einstelle ist eine Stoppbedingung. Dies verhindert, das eine Auswertung (falls sie mal vergessen wird) ewig läuft und die Festplatte vollschreibt.
Weiterhin sehr hilfreich ist die Erstell-Möglichkeit eines Zeitplans, so könnten z.B. über eine Woche hinweg jeden Tag zwischen 06 und 18 Uhr die Werte mitprotokolliert werden, in der Nacht wenn niemand arbeitet nicht.
Wenn man links in der Spalte auf die benutzerdefinierte Messung klickt, sieht man rechts eine Auflistung der definierten Indikatoren-Sammlungs-Sätzen. Ein Doppelklick hierauf öffnet die oben aufgeführte Liste mit den Indikatoren und eine Einstellmöglichkeit für die Intervalle. Standardmäßig werden die Werte alle 15 Sekunden abgefragt, evtl. sollen bestimmte Indikatoren aber häufiger protokolliert werden. Dies ist hier einstellbar.
Die Auswertung des Logfiles mit PAL
Nachdem die Messung gelaufen ist, können wir mit der Auswertung und Analyse der Werte beginnen. Hierzu rufen wir das PAL-Programm auf und klicken und durch die Einstellungen. Im zweiten Reiter wählen wir die von uns erzeugte BLG-Datei
Unter “Threshold File” wählen wir “Microsoft Hyper-V R2 SP1” aus
Im nächsten Fenster werden uns einige Fragen gestellt, diese sind
- NumberOfProcessors – Hier wird die Anzahl an Kernen eingetragen, die auch im Taskmanager unter Performance/Leistung angezeigt wird
- ThreeGBSwitch – Wird der RAM des Servers künstlich auf 3 GB begrenzt? Ich vermute mal nein ;)
- SixtyFourBit – Ist das System ein 64-Bit-System?
- TotalMemory – Die Anzahl an Arbeitsspeicher im Server
- RAID5Drives – Sind in dem Server Festplatten zu einem RAID5-Verbund zusammengeschlossen? Hier müssen, falls ja, die Laufwerksbuchstaben angegeben werden
- RAID1Drives – Sind Festplatten im RAID1 oder RAID10-Verbund vorhanden? Wenn ja, müssen hier die Laufwerksbuchstaben angegeben werden
Unter “Output Options” können die Analyse-Intervalle im Logfile angegeben werden, alternativ werden automatisch Intervalle gesetzt. Die untere Option zwingt das Programm, alle Counter auszuwerten, falls diese vorhanden sind.
Unter “File Output” kann der Ausgabe-Pfad sowie das Ausgabe-Format gewählt werden. Standardmäßig wird ein HTML-Report erzeugt, auf Wunsch kann allerdings auch eine XML-Datei erzeugt werden.
Der Reiter “Queue” zeigt uns eine Zusammenfassung der Einstellungen an.
Unter “Execute” können wir wählen ob die Auswertung sofort gestartet wird oder in eine Warteschlange aufgenommen wird, um später konvertiert zu werden. Zusätzlich kann hier die Priorität der Konvertierung heruntergesetzt werden.
Als letzten Schritt klicken wir auf “Finish” und die Konvertierung startet. Wenn diese fertig ist, öffnet sich ein Browser mit dem erzeugten HTML-Report.
Die Übersetzung des Logfiles
Wenn die Erstellung des Logfiles nicht auf einem englischen System vorgenommen wurde, kann es passieren das nach dem Start der Auswertung der folgende Fehler auftaucht.
Dies bedeutet, dass das Programm die BLG-Datei nicht lesen kann. In diesem Fall muss man sich das kleine Programm “Perfmon Log Translator” herunterladen und die Datei konvertieren. Das Programm ist hier zu finden:
Download: Perfmon Log Translator (PLT)
Das Programm ist sehr einfach aufgebaut, man wählt als erstes seine Datei aus, wählt die Quell-Sprache und kann dann eigentlich schon mit “Execute!” die Konvertierung starten.
Das Ergebnis sieht wie folgt aus:
Wenn wir nun das PAL-Tool mit dem neuen Logfile füttern, sieht das Ergebnis besser aus:
Der Report
Wenn die Auswertung komplett durchgelaufen ist, bekommen wir als Ausgabe einen Report, der als erstes alle Fehler bzw. Warnungen in chronologischer Reihenfolge auflistet, danach werden alle Auswertungen, gruppiert nach Parameter, aufgelistet. Der Report an sich ist sehr aufwendig und groß, zusätzlich zu den Werten werden noch weitere Informationen und Tipps aufgelistet. Dies sieht z.B. für die Anzahl an Disk-Transfers pro Sekunde wie folgt aus:
Wenn Sie Unterstützung bei der Messung Ihrer Host-Performance, Hilfe bei der Interpretierung Ihrer Ergebnisse oder Referenz-Werte von z.B. unseren Systemen benötigen stehen wir Ihnen natürlich gerne zur Verfügung.