Tracing in MSWindows mit ETW
- Mit ETW kann man User-Mode-Programme/DLLs und Kernereignisse sowie Treiber verfolgen [ETW],[Park]
- exterm niederigen Overhead, ETW ist die Infrastruktur [WPA]
- Seit Windows 2000 die wichtigste Instrumentierungsmethode bei Windows [Park]
- Implementiert durch einen Buffer- und Logmechanismus im Kern. [Park]
Jeder Prozessor hat einen Buffer, geschrieben wird im Asynchronen Schreiben
- Durch den Kernmechanismus und die Trennung der Grundrollen können auch Ereignisse direkt vor unerwarteten Verhalten (Deadlocks, Abstürzen usw.) beobachtet werden. [Park]
- Nutzung: dynamisch dazuschaltbar[Park]
- Im Code: Windows preprocessor WPP , printf-ähnliche Macros[Park]
- Seit Vista sind die Windows Events, die in Unix dem Syslog entsprechen und der ETW unifiziert worden (siehe Windows Events)
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
- Tool ECManGen.exe des Windows SDK (aus Writing an Instrumentation Manifest)
- mc aus dem Windows SDK generiert code
- wevtutil im manifest installiert das Manifest (als Administator !)
- 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
admin | Administrator muss darauf reagieren | immer aktiv |
operational | abstrakte höhere Ebene für | immer aktiv |
analytic | | normal ausgeschaltet |
debug | | normal 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
-
- Vergleicht Performance verschiedener Tracing-Machanismen - ETW ist mit Abstand der Beste
- System.Diagnostics.Trace nutze nicht EWT
Informatik- und Netzwerkverein Ravensburg e.V
RW