Informationen zur Ereignisablaufverfolgung

Die Ereignisablaufverfolgung für Windows (ETW) ist eine effiziente Ablaufverfolgung 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 zu bestimmen, 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 unterschiedliche Komponenten unterteilt:

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

Das folgende Diagramm zeigt das Ereignisablaufverfolgungsmodell.

Ereignisablaufverfolgungsmodell

Steuergeräte

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 umfassen die Anzahl der verwendeten Puffer, die Anzahl der bereitgestellten Puffer und die Anzahl der ereignisse und Puffer, die verloren gegangen sind.

Weitere Informationen finden Sie unter Steuern von Ereignisablaufverfolgungssitzungen.

Providers

Anbieter sind Anwendungen, die die Ereignisablaufverfolgungsinstrumentation enthalten. Nachdem sich ein Anbieter selbst registriert hat, kann ein Controller die Ereignisablaufverfolgung im Anbieter aktivieren oder deaktivieren. Der Anbieter definiert seine Interpretation der Aktivierung oder Deaktivierung. Im Allgemeinen generiert ein aktivierter Anbieter Ereignisse, während ein deaktivierter Anbieter nicht. Auf diese Weise können Sie Ihrer Anwendung Ereignisablaufverfolgung hinzufügen, ohne dass ereignisse immer generiert werden müssen.

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

Weitere Informationen finden Sie unter Bereitstellen von Ereignissen.

Anbietertypen

Es gibt vier Haupttypen von Anbietern: MOF(klassische) Anbieter, 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 (klassische) Anbieter:

  • Verwenden Sie die RegisterTraceGuids - und TraceEvent-Funktionen , um Ereignisse zu registrieren und zu schreiben.
  • Verwenden Sie MOF-Klassen, um Ereignisse zu definieren, damit Verbraucher wissen, wie sie genutzt werden können.
  • Kann jeweils nur von einer Trace-Sitzung aktiviert werden.

WPP-Anbieter:

  • Verwenden Sie die RegisterTraceGuids - und TraceEvent-Funktionen , um Ereignisse zu registrieren und zu schreiben.
  • Sie haben zugehörige TMF-Dateien (die in die .pdb-Datei einer Binärdatei kompiliert wurden), die Dekodierungsinformationen enthalten, die aus der Überprüfung der WPP-Instrumentierung im Quellcode durch den Präprozessor abgeleitet wurden.
  • Kann jeweils nur von einer Trace-Sitzung 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 Verbraucher wissen, wie sie genutzt werden können.
  • Kann von bis zu acht Trace-Sitzungen 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 zum Konsumieren erforderlichen Informationen enthalten.
  • Kann von bis zu acht Trace-Sitzungen gleichzeitig aktiviert werden.

Alle Ereignisanbieter verwenden grundsätzlich die Ereignisablaufverfolgungsfamilie von APIs (TraceEvent für ältere Technologien undEventWrite EventWriteEx/ für neuere). Ereignisanbieter unterscheiden sich einfach in den Feldtypen, die sie in Ereignisnutzlasten speichern und wo sie die zugehörigen Ereignisdecodierungsinformationen speichern.

Verbraucher

Verbraucher sind Anwendungen, die eine oder mehrere Ereignisverfolgungssitzungen als Quelle für Ereignisse auswählen. Ein Verbraucher kann Ereignisse aus mehreren Ereignisablaufverfolgungssitzungen gleichzeitig anfordern; das System liefert die Ereignisse in chronologischer Reihenfolge. Verbraucher können Ereignisse empfangen, die in Protokolldateien gespeichert sind, oder von Sitzungen, die Ereignisse in Echtzeit liefern. 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 Ereignisse verbrauchen.

Note

Analysetools für ETW-Ablaufverfolgungen: Während Sie ETW-Ereignisse programmgesteuert nutzen können, bieten mehrere Tools umfassende Visualisierungen und Analysen:

  • Windows Leistungsanalyse (WPA) – grafisches Tool zum Analysieren von ETW-Ablaufverfolgungen, die von Windows Performance Recorder (WPR) oder Xperf erfasst werden. Ideal für CPU-, Datenträger-, Arbeitsspeicher- und UI-Reaktionsfähigkeitsanalysen.
  • PerfView – kostenloses Open-Source-Tool aus Microsoft für .NET- und systemeigene Leistungsanalyse. Überzeugt bei CPU-Profiling, GC-Analyse und Wall-Clock-Untersuchungen mit ETW.
  • xperf (Windows Performance Toolkit) – Befehlszeilentool zum Erfassen von Kernel- und Benutzermodus-ETW-Ablaufverfolgungen.
  • tracerpt – integriertes Windows Tool zum Generieren von Berichten aus ETW-Protokolldateien.

Eine Liste der Befehlszeilenablaufverfolgungstools finden Sie unter "Ereignisablaufverfolgungstools".

Fehlende Ereignisse

Perfmon, Systemdiagnose und andere Systemtools können über fehlende Ereignisse im Ereignisprotokoll berichten und angeben, 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 KB. Dazu gehören der ETW-Header sowie die Daten oder Nutzlast. 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 durch die Anwendung konfiguriert wird, die die Ereignisse protokolliert.

  • Bei der Echtzeit-Protokollierung verbraucht der Echtzeit-Konsument die Ereignisse nicht schnell genug oder ist gar nicht vorhanden, so dass sich die Sicherungsdatei füllt. Dies kann dazu führen, dass der Ereignisprotokolldienst beendet und gestartet wird, wenn Ereignisse protokolliert werden. Ein Benutzer hat keine Kontrolle über diese fehlenden Ereignisse.

  • Bei der Protokollierung in eine Datei ist die Festplatte zu langsam, um mit der Protokollierungsrate Schritt zu halten.

Aus irgendeinem dieser Gründe melden Sie diese Probleme dem Anbieter der Anwendung oder des Diensts, die die Ereignisse generieren. 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 eine eingeschränkte Möglichkeit, den maximalen Speicherplatz zu erhöhen, der vom Ereignisprotokolldienst verwendet werden kann, wodurch die Anzahl fehlender Ereignisse reduziert werden kann.