Tracing in MSWindows mit ETW

Grundrollen von Dienstprogrammen

(Ein konkretes Programm kann mehrere Rollen einnehmen.)

Controller

starten und stoppen eine Aufzeichnungssitzung uns schalten Ereignislieferenten (Provider) an

logman
aktiviert und stopt Tracing

logman query producer listet Produzenten auf (???)

Mit logman query werden alle "Sammlungssätze" angezeigt (vgl. Perfmon unten)

Wevtutil
Kommandozeilenprogramm zum Abrufen von Informationen zu Ereignisprotokollen und -herausgebern, Installieren und Deinstallieren von Ereignismanifestdateien, Ausführen von Abfragen und Exportieren, Archivieren und Löschen von Protokollen. [Aufruf ohne Parameter]
(hängt zusammen mit MFTrace.xml aus dem Microsoft SDK)
perfmon
im Menu "Sammlungssätze - Benutzerdefiniert " kann die Sammlung erstellt werden. Bei manueller Erstellung können registrierte Provider gewählt werden.
xperf
xperf kann auch die Recordings starten
C:\tmp>xperf -start RWTest -on "TestProvider" -f tp.etl
und stoppen
    xperf -stop RWTest
   

Hypothese: Möglicherweise fassen Loggingsessions mehrere Einzelloggings zusammen

tracelog
im SDK unter Samples/winbase/Eventing/Controller zum selbercompiliern

siehe auch Configuring and Starting an Event Tracing Session

Provider/Ereignislieferanten

liefern die Ereignisse

Zwei Schnittstellen:
Klassisch mit RegisterTraceGuids/TraceEvent
manifestbasiert mit EventRegister/EventWrite
dieses scheint die neuere zu sein, wobei die Ereignisse mit XML definiert werden
  1. Tool ECManGen.exe des Windows SDK (aus Writing an Instrumentation Manifest)
  2. mc aus dem Windows SDK generiert code
  3. wevtutil im manifest installiert das Manifest (als Administator !)
  4. xperf -providers i frägt die installierten Provider ab

Consuments/Ereigniskonsumenten

empfangen und verarbeiten die Ereignisse d.h. stellen sie dar, oder werten sie statistisch aus

perfmon
Processmonitor von Sysinternals.com
tracerpt.exe
Dumped die Ereignisse aus einem Logfile
Erkenntnis: Im Manifest spezifizierte nutzerdefinierte Daten werden als Binärmuster darstellt (Enttäschung: Wo zu dann das Manifest ?)
GPUView
Unter C:\Programme\Microsoft Windows Performance Toolkit\GPUView befindet sich GPUView zur Analyse der Graphikkarte
Dort gibt es auch ein Script log.cmd, welches mit xperf das Tracing konfiguriert.
(Gefunden auf einem Windows 7-System - wo kommt dies genau her ???)

Programme (Vista, Win7)- einordnen

(manche aus SDK)
xperf
Analyse mit Xperf
(bei SDK dabei, aber unter C:\Program Files\Microsoft Performance Toolkit\)
Processmonitor der Sysinternals
nutzt auch ETW
Msxfaq über Powershell
erwähnt auch, wie man mit der Powershell Events auslösen und abfragen kann.
Windows Performance AnalyserWPT-Windows performacetools
(waren schon bei Windows 7 dabei)
Windows Performance AnalyzerWPA

Detailbegriffe des Manifests

(logischerweise kommen diese wieder beim Eventschreibaufruf des Providers vor).
EventID
Typ des Events? Eindeutige Kennzeichnung des Event(types?) im Provider
channel
Gruppe von Events für eine Interessengruppe
adminAdministrator muss darauf reagierenimmer aktiv
operationalabstrakte höhere Ebene für immer aktiv
analyticnormal ausgeschaltet
debugnormal ausgeschaltet

Weitere Tools

TraceWPP
Präprozessor (in WindowsSDK mit dabei)
???: Wie wird der WPP verwendet ?

Fragen

Wie kann man die Nutzerspezifizierten Daten (BinaryEventData) darstellen ?

Trace Message Format File
Beschreibt das Format der Events
Tracefmt

Literatur:

[EWT] Event Tracing for Windows (ETW) im Usermode
Beschreibt den Mechanismus an sich, C++, nicht .Net
[EWTD] Event Tracing for Windows (ETW) für Devicedrivers
[Park] Dr. Park, R. Buch:"Event Tracing: Improve Debugging And Performance Tuning With ETW" (deutsch Verbessertes Debugging und Leistungsoptimierung mit ETW )
[Yaniv] Creating and publishing events using ETW Manifest-based provider
erklärt die kurz Zusammenhänge der Tools ecmangen,mc,wevtutil und xperf
Using .NET 4.0 Event Tracing for Windows (ETW) along with application ETW
FAQ: Common Questions for ETW and Windows Event Log

Beschreibungen

Gil.Schmidt: How to get CPU usage of processes and threads"
Beschreibt die Systemcalls und gab allgemeine Tips
THOMAS WÖLFER , MORITZ JÄGER,"Know-how: Windows Performance Counter"
Einführung, vermutlich handelt es sich um perfmon.

Erfahrungsberichte

John Robbin: See the I/O You Caused by Getting Your Diagnostic Tracing into Process Monitor
Best Practices for Instrumenting High Performance BizTalk Solutions

Informatik- und Netzwerkverein Ravensburg e.V RW