Freigeben über


ETW-Ereignisse in der Task Parallel Library und PLINQ

Die Task Parallel Library und PLINQ generieren Ereignisse für die Ereignisablaufverfolgung für Windows (ETW), die Sie zur Profilerstellung und Problembehebung für Anwendungen verwenden können, indem Sie Tools wie den Windows Performance Analyzer verwenden. In den meisten Szenarios ist der beste Weg der Profilerstellung für parallelen Anwendungscode jedoch das Verwenden der Parallelitätsschnellansicht in Visual Studio.

Task Parallel Library-ETW-Ereignisse

In der EVENT_HEADER-Struktur, ist Folgendes die ProviderId-GUID für Ereignisse, die durch Parallel.For, Parallel.ForEach und Parallel.Invoke generiert wurden:

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 System.Int32 Die ID des TaskScheduler, der die Schleife gestartet hat.
OriginatingTaskID System.Int32 Die ID der Aufgabe, die die Schleife gestartet hat.
ForkJoinContextID System.Int32 Ein eindeutiger Bezeichner, der verwendet wird, um Schachteln und Paare für Ereignisse mit einer Semantik für Abzweigungen und Zusammenführungen anzugeben.
OperationType System.Int32 Gibt den Typ der Schleife an:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach
InclusiveFrom System.Int64 Der Anfangswert des Schleifenzählers
ExclusiveTo System.Int64 Der Endwert des Schleifenzählers

Ende der parallelen Schleife

EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2

Benutzerdaten

Name Typ Beschreibung
OriginatingTaskSchedulerID System.Int32 Die ID des TaskScheduler, der die Schleife gestartet hat.
OriginatingTaskID System.Int32 Die ID der Aufgabe, die die Schleife gestartet hat.
ForkJoinContextID System.Int32 Ein eindeutiger Bezeichner, der verwendet wird, um Schachteln und Paare für Ereignisse mit einer Semantik für Abzweigungen und Zusammenführungen anzugeben.
totalIterations System.Int64 Gesamtanzahl von Iterationen

Beginn des parallelen Aufrufs

EVENT_DESCRIPTOR.Task = 3

EVENT_DESCRIPTOR.Id = 3

Benutzerdaten

Name Typ Beschreibung
OriginatingTaskSchedulerID System.Int32 Die ID des TaskScheduler, der die Schleife gestartet hat.
OriginatingTaskID System.Int32 Die ID der Aufgabe, die die Schleife gestartet hat.
ForkJoinContextID System.Int32 Ein eindeutiger Bezeichner, der verwendet wird, um Schachteln und Paare für Ereignisse mit einer Semantik für Abzweigungen und Zusammenführungen anzugeben.
totalIterations System.Int64 Gesamtanzahl von Iterationen
operationType System.Int32 Gibt den Typ der Schleife an:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach
ActionCount System.Int32 Die Anzahl der Aktionen, die im parallelen Aufruf ausgeführt wird.

Ende des parallelen Aufrufs

EVENT_DESCRIPTOR.Task = 4

EVENT_DESCRIPTOR.Id = 4

Benutzerdaten

Name Typ Beschreibung
OriginatingTaskSchedulerID System.Int32 Die ID des TaskScheduler, der die Schleife gestartet hat.
OriginatingTaskID System.Int32 Die ID der Aufgabe, die die Schleife gestartet hat.
ForkJoinContextID System.Int32 Ein eindeutiger Bezeichner, der verwendet wird, um Schachteln und Paare für Ereignisse mit einer Semantik für Abzweigungen und Zusammenführungen anzugeben.

PLINQ-ETW-Ereignisse

Die EVENT_HEADER.ProviderId-GUID für PLINQ ist:

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 System.Int32 Die ID des TaskScheduler, der die Schleife gestartet hat.
OriginatingTaskID System.Int32 Die ID der Aufgabe, die die Schleife gestartet hat.
QueryID System.Int32 Ein eindeutiger Bezeichner der Abfrage.

Ende der parallelen Abfrage

EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2

Benutzerdaten

Name Typ Beschreibung
OriginatingTaskSchedulerID System.Int32 Die ID des TaskScheduler, der die Schleife gestartet hat.
OriginatingTaskID System.Int32 Die ID der Aufgabe, die die Schleife gestartet hat.
QueryID System.Int32 Ein eindeutiger Bezeichner der Abfrage.

Siehe auch