Teil 5: Erkennen von Flaschenhälsen und Problemen

.Net-Anwendungen für Multi-Core optimieren

Intel VTune Performance Analyzer

VTune ist ein Analysewerkzeug (Profiler), das dabei hilft, Applikationen in Hinsicht auf die Leistung und den Durchsatz zu untersuchen. Durch die Ermittlung (Sampling) von Messwerten lassen sich Rückschlüsse auf das Verhalten der Applikation ableiten. Beim Sampling klinkt sich VTune in den Prozessablauf ein und ermittelt die jeweils aktuellen Gegebenheiten.

VTune: Die Analyse überwacht im ersten Schritt alle laufenden Prozesse.
VTune: Die Analyse überwacht im ersten Schritt alle laufenden Prozesse.

Mittels integrierter Performance Counter werden Leistungsinformationen gewonnen, wie beispielsweise zu Cache Misses, Interrupts oder zur Verweildauer von Prozessen in den Prozeduren. Aus den gewonnenen Leistungswerten bildet VTune graphische Übersichten wie beispielsweise die folgende Übersicht zu den Prozessen. Das Beispiel zeigt die benötigte Laufzeit (Verweildauer) von Prozessen, Modulen oder Funktionen. Durch Drill-Down lassen sich diese Werte weiter untersuchen.

Drill-Down: Die Perfomance-Analyse ist bis auf einzelne Code-Zeilen Detailtiefe möglich.
Drill-Down: Die Perfomance-Analyse ist bis auf einzelne Code-Zeilen Detailtiefe möglich.

Sampling over Time

Beim “Sampling over Time” im folgenden Bild lassen sich die unterschiedlichen Threads der Applikation im Vergleich zueinander untersuchen. Diese Analyse liefert auch Aussagen darüber, ob die Verteilung der Aufgaben auf die Threads zu einer gleichmäßigen Auslastung der Threads führt und wie groß der Synchronisationsaufwand zwischen ihnen ist.

Die Applikation im folgenden Bild weist große Unterschiede in den Threads auf und kann daher kaum als gut verteilt betrachtet werden. Einige der Threads haben eine Menge Arbeit zu bewältigen. Dies wird in roter Farbe dargestellt. Andere wiederum - in hellem Grün unterlegt - sind eher unterlastet.

Thread-Analyse: Die grünen Threads langweilen sich, der rot ist überlastet.
Thread-Analyse: Die grünen Threads langweilen sich, der rot ist überlastet.