Informationen zur Ereignisablaufverfolgung

Ereignisablaufverfolgung für Windows (ETW) ist eine effiziente Ablaufverfolgungsfunktion auf Kernelebene, mit der Sie kernel- oder anwendungsdefinierte Ereignisse in einer Protokolldatei protokollieren können. Sie können die Ereignisse in Echtzeit oder aus einer Protokolldatei nutzen und sie verwenden, um eine Anwendung zu debuggen oder um zu ermitteln, wo Leistungsprobleme in der Anwendung auftreten.

Mit ETW können Sie die Ereignisablaufverfolgung dynamisch aktivieren oder deaktivieren, sodass Sie eine detaillierte Ablaufverfolgung in einer Produktionsumgebung durchführen können, ohne dass Computer- oder Anwendungsneustarts erforderlich sind.

Die Ereignisablaufverfolgungs-API ist in drei verschiedene Komponenten unterteilt:

  • Controller, die eine Ereignisablaufverfolgungssitzung starten und beenden und Anbieter aktivieren
  • Anbieter, die die Ereignisse bereitstellen
  • Consumer, die die Ereignisse nutzen

Das folgende Diagramm zeigt das Ereignisablaufverfolgungsmodell.

Ereignisablaufverfolgungsmodell

Controller

Controller sind Anwendungen, die die Größe und den Speicherort der Protokolldatei definieren, Ereignisablaufverfolgungssitzungen starten und beenden, Anbieter aktivieren, damit sie Ereignisse in der Sitzung protokollieren, die Größe des Pufferpools verwalten und Ausführungsstatistiken für Sitzungen abrufen können. Sitzungsstatistiken enthalten die Anzahl der verwendeten Puffer, die Anzahl der bereitgestellten Puffer und die Anzahl der verlorenen Ereignisse und Puffer.

Weitere Informationen finden Sie unter Steuern von Ereignisablaufverfolgungssitzungen.

Anbieter

Anbieter sind Anwendungen, die die Ereignisablaufverfolgungsinstrumentation enthalten. Nachdem sich ein Anbieter registriert hat, kann ein Controller die Ereignisablaufverfolgung im Anbieter aktivieren oder deaktivieren. Der Anbieter definiert seine Interpretation, dass aktiviert oder deaktiviert wird. Im Allgemeinen generiert ein aktivierter Anbieter Ereignisse, während ein deaktivierter Anbieter dies nicht tut. Auf diese Weise können Sie Ihrer Anwendung die Ereignisablaufverfolgung hinzufügen, ohne dass sie ständig Ereignisse generieren muss.

Obwohl das ETW-Modell Controller und Anbieter in separate Anwendungen trennt, kann eine Anwendung beide Komponenten enthalten.

Weitere Informationen finden Sie unter Bereitstellen von Ereignissen.

Anbietertypen

Es gibt vier Standard Anbietertypen: MOF-Anbieter (klassisch), WPP-Anbieter, manifestbasierte Anbieter und TraceLogging-Anbieter. Sie sollten einen manifestbasierten Anbieter oder einen TraceLogging-Anbieter verwenden, wenn Sie Anwendungen für Windows Vista oder höher schreiben, die keine Legacysysteme unterstützen müssen.

MOF-Anbieter (klassisch):

  • Verwenden Sie die Funktionen RegisterTraceGuids und TraceEvent , um Ereignisse zu registrieren und zu schreiben.
  • Verwenden Sie MOF-Klassen, um Ereignisse zu definieren, damit Consumer wissen, wie sie genutzt werden sollen.
  • Kann jeweils nur von einer Ablaufverfolgungssitzung aktiviert werden.

WPP-Anbieter:

  • Verwenden Sie die Funktionen RegisterTraceGuids und TraceEvent , um Ereignisse zu registrieren und zu schreiben.
  • Zugeordnete TMF-Dateien (kompiliert in die PDB-Datei einer Binärdatei), die Decodierungsinformationen enthalten, die aus der Überprüfung der WPP-Instrumentierung im Quellcode des Präprozessors abgeleitet wurden.
  • Kann jeweils nur von einer Ablaufverfolgungssitzung aktiviert werden.

Manifestbasierte Anbieter:

  • Verwenden Sie EventRegister und EventWrite , um Ereignisse zu registrieren und zu schreiben.
  • Verwenden Sie ein Manifest, um Ereignisse zu definieren, damit Consumer wissen, wie sie genutzt werden sollen.
  • Kann von bis zu acht Ablaufverfolgungssitzungen gleichzeitig aktiviert werden.

TraceLogging-Anbieter :

  • Verwenden Sie TraceLoggingRegister und TraceLoggingWrite , um Ereignisse zu registrieren und zu schreiben.
  • Verwenden Sie selbstbeschreibende Ereignisse, damit die Ereignisse selbst alle erforderlichen Informationen enthalten, um sie zu nutzen.
  • Kann von bis zu acht Ablaufverfolgungssitzungen gleichzeitig aktiviert werden.

Alle Ereignisanbieter verwenden grundsätzlich die Ereignisablaufverfolgungsfamilie von APIs (TraceEvent für Legacytechnologien und EventWrite/EventWriteEx für neuere Technologien). Ereignisanbieter unterscheiden sich einfach darin, welche Feldtypen sie in Ereignisnutzlasten speichern und wo sie die zugeordneten Ereignisdecodierungsinformationen speichern.

Consumer

Consumer sind Anwendungen, die eine oder mehrere Ereignisablaufverfolgungssitzungen als Ereignisquelle auswählen. Ein Consumer kann Ereignisse von mehreren Ereignisablaufverfolgungssitzungen gleichzeitig anfordern. das System liefert die Ereignisse in chronologischer Reihenfolge. Consumer können Ereignisse empfangen, die in Protokolldateien oder von Sitzungen gespeichert sind, die Ereignisse in Echtzeit übermitteln. Bei der Verarbeitung von Ereignissen kann ein Consumer Start- und Endzeiten angeben, und nur Ereignisse, die im angegebenen Zeitrahmen auftreten, werden übermittelt.

Weitere Informationen finden Sie unter Verwenden von Ereignissen.

Fehlende Ereignisse

Perfmon, Systemdiagnose und andere Systemtools melden möglicherweise fehlende Ereignisse im Ereignisprotokoll und geben an, dass die Einstellungen für die Ereignisablaufverfolgung für Windows (ETW) möglicherweise nicht optimal sind. Ereignisse können aus verschiedenen Gründen verlorengehen:

  • Die Gesamtereignisgröße ist größer als 64.000. Dies schließt den ETW-Header sowie die Daten oder Nutzlast ein. Ein Benutzer hat keine Kontrolle über diese fehlenden Ereignisse, da die Ereignisgröße von der Anwendung konfiguriert wird.

  • Die ETW-Puffergröße ist kleiner als die Gesamtereignisgröße. Ein Benutzer hat keine Kontrolle über diese fehlenden Ereignisse, da die Ereignisgröße von der Anwendung konfiguriert wird, die die Ereignisse protokolliert.

  • Für die Echtzeitprotokollierung verbraucht der Echtzeitverbraucher Ereignisse nicht schnell genug oder ist nicht vollständig vorhanden, und dann füllt sich die Sicherungsdatei. Dies kann dazu führen, wenn der Ereignisprotokolldienst beendet und gestartet wird, wenn Ereignisse protokolliert werden. Ein Benutzer hat keine Kontrolle über diese fehlenden Ereignisse.

  • Bei der Protokollierung bei einer Datei ist der Datenträger zu langsam, um mit der Protokollierungsrate Schritt zu halten.

Aus einem dieser Gründe melden Sie diese Probleme dem Anbieter der Anwendung oder des Diensts, der die Ereignisse generiert. Diese Probleme können nur vom Anwendungsentwickler oder vom Dienst behoben werden, der die Ereignisse protokolliert. Wenn die fehlenden Ereignisse im Ereignisprotokolldienst gemeldet werden, kann dies auf ein Problem mit der Konfiguration des Ereignisprotokolldiensts hinweisen. Der Benutzer hat möglicherweise eingeschränkte Möglichkeiten, den maximalen Speicherplatz zu erhöhen, der vom Ereignisprotokolldienst verwendet werden soll, wodurch die Anzahl fehlender Ereignisse reduziert werden kann.