Performanceanalyse

Ablaufverfolgung

Neben den Leistungsindikatorenprotokollen, die einfach zu verstehen sind, gibt es noch eine zweite Gruppe: die Protokolle der Ablaufverfolgung. Diese Protokolle zeichnen beim Auftreten bestimmter Aktivitäten detaillierte Informationen über Abläufe im Betriebssystem auf. Im Gegensatz zu den Leistungsindikatoren wird hier also nicht mit Intervallen, sondern ereignisgesteuert gearbeitet. Die Ergebnisse können allerdings nicht direkt mit der Anwendung Leistung betrachtet werden. Sie müssen zunächst mit dem Tool tracerpt.exe umgewandelt werden. Alternativ dazu können Sie auch von Entwicklern über definierte APIs verarbeitet werden.

Ein Protokoll der Ablaufverfolgung kann im entsprechenden Bereich der Anwendung Leistung erstellt werden. Im Register Allgemein muss der Anbieter definiert werden, dessen Ereignisse verarbeitet werden sollen (Bild 7). Als Anbieter-Gruppen gibt es sowohl die vorkonfigurierten Systemanbieter als auch andere Anbieter. Ein Anbieter ist ein Dienst, der mit der Performance-Überwachung so integriert ist, dass er Ereignisse generieren kann, die einen Eintrag in der Ablaufverfolgung erzeugen. Beim Systemanbieter kann zunächst der Anbieterstatus geprüft werden. Hier wird angezeigt, welche Anbieter es gibt und welche davon aktiviert sind. Die meisten Anbieter sind standardmäßig nicht aktiviert.

Bild 7: Die Auswahl des Anbieters für das Protokoll der Ablaufverfolgung.
Bild 7: Die Auswahl des Anbieters für das Protokoll der Ablaufverfolgung.

Bei den Systemanbietern können Sie steuern, welche Ereignisse protokolliert werden sollen. Wenn Sie einen Kernel-Trace aktivieren, also mit dem aktivierten Systemanbieter Kernel arbeiten und die Ereignisse auf dieser Ebene detailliert ermitteln, werden sehr große Protokolle erzeugt. Das macht allenfalls für Systementwickler Sinn. Die Standardoption ist daher auch die Auswahl eines Nicht-Systemanbieters, den Sie über die Schaltfläche Hinzufügen auswählen. Sie können hier beispielsweise auf verschiedene Active Directory-Ereignisse reagieren. Für Nicht-Systemanbieter lässt sich keine Auswahl der Ereignisse vornehmen, da die protokollierten Ereignisse durch den gewählten Systemanbieter fest vorgegeben sind. Bei verschiedenen Ereignissen müssen Sie bei Ausführen als ein administratives Konto angeben, damit die Ablaufverfolgung durchgeführt werden kann. Falls sich das Protokoll nicht starten lässt, sollten Sie als Erstes überprüfen, ob das Problem eventuell bei nicht ausreichenden Berechtigungen liegt.

Anschließend können Sie im Register Protokolldateien zwischen den Dateitypen sequentielle Datei und zirkuläre Datei unterscheiden. Letztere hat eine feste Länge. Wenn sie voll ist, werden die ältesten Einträge überschrieben.

Neben dem Zeitplan enthält das Register Erweitert noch Puffereinstellungen. Das ist vor allem bei Protokollen, die auf einer Vielzahl von Ereignissen basieren, wichtig. In diesem Fall werden die Daten nicht permanent in die Protokolldatei geschrieben, sondern immer nur in Blöcken von standardmäßig 4 KByte. Es bietet sich an, diesen Wert zu erhöhen, wenn sehr viele Informationen in die Protokolldatei geschrieben werden müssen. Sie können auch ein Intervall konfigurieren, nach dem in jedem Fall eine Übertragung der Protokollinformationen in die Datei erfolgt.

Nach dem Sammeln der Daten kann die Umsetzung der binären Protokolldatei in eine lesbare Datei erfolgen. Dazu wird der bereits erwähnte Befehl tracerpt.exe verwendet:

C:\perflogs>tracerpt test_000002.etl -o protokoll.txt
Eingabe
----------------
Datei(en):
Test_000002.etl
100.00%
Ausgabe
----------------
Text (CSV): protokoll.txt
Der Befehl wurde erfolgreich ausgeführt.

Die Datei kann nun mit Excel oder anderen Anwendungen verarbeitet werden. Statt einer CSVDatei lassen sich auch andere Dateiformate wie XML- oder HTML-Dateien erzeugen.

Einen Ausschnitt aus einer Datei, die bei der Beobachtung von Kerberos-Ereignissen erzeugt wird, zeigt Listing 1.

Listing 1: Ein Ausschnitt aus einer Datei zur Ablaufverfolgung
Event Name, Type, TID, Clock-Time, Kernel(ms), User(ms), User Data
EventTrace, Header, 0x00000B94, 127915049643750000, 30, 0, 4096,
33620485, 3790, 1, 127915345535625000, 156250, 0, 0x00000001, 5,
1, 4, 0, 2993, 0x006D4AC8, 0x006D4AD2, 0, 3579545,
127915049643750000, 0x00000002, 0, 0, 0
TGSRequest, Start, 0x00000E78, 127915055878281250, 0, 0, 0x40830000, 0,
0
TGSRequest, End, 0x00000E78, 127915055878281250, 0, 0, 0x0000000D,
"", "host/adfsidpad.adfs.intra", "ADFS.INTRA", 0, 0
TGSRequest, Start, 0x0000061C, 127915064881718750, 15, 0, 0x40830000, 0,
0
TGSRequest, End, 0x0000061C, 127915064881875000, 15, 0, 0x0000000D,
"", "host/adfsidpad.adfs.intra", "ADFS.INTRA", 0, 0
TGSRequest, Start, 0x0000065C, 127915068946562500, 1995, 360, 0x40830000, 0,
0
TGSRequest, End, 0x0000065C, 127915068946718750, 1995, 360, 0x0000000D,
"", "host/adfsip.adfs.intra", "ADFS.INTRA", 0, 0
TGSRequest, Start, 0x00000EA4, 127915073885000000, 0, 0, 0x40830000, 0,
0
TGSRequest, End, 0x00000EA4, 127915073885000000, 0, 0, 0x0000000D,
"", "host/adfsidpad.adfs.intra", "ADFS.INTRA", 0, 0
TGSRequest, Start, 0x00000EA4, 127915082890312500, 0, 0, 0x40830000, 0,
0
TGSRequest, End, 0x00000EA4, 127915082890312500, 0, 0, 0x0000000D,
"", "host/adfsidpad.adfs.intra", "ADFS.INTRA", 0, 0
TGSRequest, Start, 0x000005C0, 127915091895312500, 0, 0, 0x40830000, 0,
0
TGSRequest, End, 0x000005C0, 127915091895312500, 0, 0, 0x0000000D,
"", "host/adfsidpad.adfs.intra", "ADFS.INTRA", 0, 0

In diesem Fall werden neben den Ereignissen und Informationen zum auslösenden Thread noch Informationen über die für die Bearbeitung des Ereignisses benötigte Prozessorzeit im Kernelund Benutzermodus ermittelt.

Protokolle zur Ablaufverfolgung sind einerseits interessant, um erkennen zu können, wie hoch die von definierten Systemereignissen erzeugte Last ist. Sie sind aber auch für Anwendungsentwickler von Bedeutung, um selbst Anbieter zu schreiben und damit detaillierter analysieren zu können, wie sich bestimmte Funktionen der Anwendung auf die Performance des Systems auswirken.