ETW-Ereignisse in der Task Parallel Library und PLINQ
Von der Task Parallel Library und PLINQ werden ETW (Ereignisablaufverfolgung für Windows)-Ereignisse generiert, die mit Tools wie dem Windows-Leistung-Analyzer zur Profilerstellung und Fehlerbehebung für Anwendungen verwendet werden können. Jedoch stellt in den meisten Szenarien die Verwendung des Parallelitätsschnellansicht der Visual Studio Team Edition die beste Lösung für die Profilerstellung für parallelen Anwendungscode dar.
Task Parallel Library-ETW-Ereignisse
In der EVENT_HEADER-Struktur lautet die ProviderId-GUID für von ParallelFor(), ParallelForEach() und ParallelInvoke() generierte Ereignisse wie folgt:
0x2e5dba47, 0xa3d2, 0x4d16, 0x8e, 0xe0, 0x66, 0x71, 0xff, 0xdc, 0xd7, 0xb5
Beginn der parallelen Schleife
EVENT_DESCRIPTOR.Task = 1
EVENT_DESCRIPTOR.Id = 1
Benutzerdaten
Name |
Typ |
Beschreibung |
---|---|---|
OriginatingTaskSchedulerID |
Die ID des TaskScheduler, von dem die Schleife gestartet wurde. |
|
OriginatingTaskID |
Die ID der Aufgabe, von der die Schleife gestartet wurde. |
|
ForkJoinContextID |
Ein eindeutiger Bezeichner, mit dem Schachtelung und Paare für Ereignisse mit Gabelung/Join-Semantik angegeben werden. |
|
OperationType |
Gibt den Typ der Schleife an: 1 = ParallelInvoke 2 = ParallelFor 3 = ParallelForEach |
|
InclusiveFrom |
Der Startwert des Schleifenzählers |
|
ExclusiveTo |
Der Endwert des Schleifenzählers |
Ende der parallelen Schleife
EVENT_DESCRIPTOR.Task = 2
EVENT_DESCRIPTOR.Id = 2
Benutzerdaten
Name |
Typ |
Beschreibung |
---|---|---|
OriginatingTaskSchedulerID |
Die ID des TaskScheduler, von dem die Schleife gestartet wurde. |
|
OriginatingTaskID |
Die ID der Aufgabe, von der die Schleife gestartet wurde. |
|
ForkJoinContextID |
Ein eindeutiger Bezeichner, mit dem Schachtelung und Paare für Ereignisse mit Gabelung/Join-Semantik angegeben werden. |
|
totalIterations |
Die Gesamtanzahl der Iterationen |
Beginn des parallelen Aufrufs
EVENT_DESCRIPTOR.Task = 3
EVENT_DESCRIPTOR.Id = 3
Benutzerdaten
Name |
Typ |
Beschreibung |
---|---|---|
OriginatingTaskSchedulerID |
Die ID des TaskScheduler, von dem die Schleife gestartet wurde. |
|
OriginatingTaskID |
Die ID der Aufgabe, von der die Schleife gestartet wurde. |
|
ForkJoinContextID |
Ein eindeutiger Bezeichner, mit dem Schachtelung und Paare für Ereignisse mit Gabelung/Join-Semantik angegeben werden. |
|
totalIterations |
Die Gesamtanzahl der Iterationen |
|
operationType |
Gibt den Typ der Schleife an: 1 = ParallelInvoke 2 = ParallelFor 3 = ParallelForEach |
|
ActionCount |
Die Anzahl der Aktionen, die im parallelen Aufruf ausgeführt werden. |
Ende des parallelen Aufrufs
EVENT_DESCRIPTOR.Task = 4
EVENT_DESCRIPTOR.Id = 4
Benutzerdaten
Name |
Typ |
Beschreibung |
---|---|---|
OriginatingTaskSchedulerID |
Die ID des TaskScheduler, von dem die Schleife gestartet wurde. |
|
OriginatingTaskID |
Die ID der Aufgabe, von der die Schleife gestartet wurde. |
|
ForkJoinContextID |
Ein eindeutiger Bezeichner, mit dem Schachtelung und Paare für Ereignisse mit Gabelung/Join-Semantik angegeben werden. |
PLINQ-ETW-Ereignisse
Die EVENT_HEADER.ProviderId-GUID für PLINQ lautet:
0x159eeeec, 0x4a14, 0x4418, 0xa8, 0xfe, 0xfa, 0xab, 0xcd, 0x98, 0x78, 0x87
Beginn der parallelen Abfrage
EVENT_DESCRIPTOR.Task = 1
EVENT_DESCRIPTOR.Id = 1
Benutzerdaten
Name |
Typ |
Beschreibung |
---|---|---|
OriginatingTaskSchedulerID |
Die ID des TaskScheduler, von dem die Schleife gestartet wurde. |
|
OriginatingTaskID |
Die ID der Aufgabe, von der die Schleife gestartet wurde. |
|
QueryID |
Ein eindeutiger Abfragebezeichner. |
Ende der parallelen Abfrage
EVENT_DESCRIPTOR.Task = 2
EVENT_DESCRIPTOR.Id = 2
Benutzerdaten
Name |
Typ |
Beschreibung |
---|---|---|
OriginatingTaskSchedulerID |
Die ID des TaskScheduler, von dem die Schleife gestartet wurde. |
|
OriginatingTaskID |
Die ID der Aufgabe, von der die Schleife gestartet wurde. |
|
QueryID |
Ein eindeutiger Abfragebezeichner. |