Delen via


ETW-gebeurtenissen in taakparallelbibliotheek en PLINQ

Zowel de Taak parallelbibliotheek als PLINQ genereren ETW-gebeurtenissen (Event Trace for Windows) die u kunt gebruiken om toepassingen te profileren en problemen op te lossen met behulp van hulpprogramma's zoals de Windows Performance Analyzer. In de meeste scenario's is de beste manier om parallelle toepassingscode te profilen, gebruik te maken van Concurrency Visualizer in Visual Studio.

ETW-gebeurtenissen van taakparallelbibliotheek

In de EVENT_HEADER structuur is de ProviderId GUID voor gebeurtenissen die worden gegenereerd door Parallel.Foren Parallel.ForEachParallel.Invoke :

0x2e5dba47, 0xa3d2, 0x4d16, 0x8e, 0xe0, 0x66, 0x71, 0xff, 0xdc, 0xd7, 0xb5

Begin van parallelle lus

EVENT_DESCRIPTOR. Taak = 1

EVENT_DESCRIPTOR. Id = 1

Gebruikersgegevens

Naam Type Beschrijving
OriginatingTaskSchedulerID System.Int32 De id van de TaskScheduler waarmee de lus is gestart.
OriginatingTaskID System.Int32 De id van de taak waarmee de lus is gestart.
ForkJoinContextID System.Int32 Een unieke id die wordt gebruikt om nesten en paren aan te geven voor gebeurtenissen met semantiek van fork/join.
OperationType System.Int32 Geeft het type lus aan:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach
InclusiveFrom System.Int64 De beginwaarde van de lusteller
ExclusiveTo System.Int64 De eindwaarde van de lusteller

Einde van parallelle lus

EVENT_DESCRIPTOR. Taak = 2

EVENT_DESCRIPTOR. Id = 2

Gebruikersgegevens

Naam Type Beschrijving
OriginatingTaskSchedulerID System.Int32 De id van de TaskScheduler waarmee de lus is gestart.
OriginatingTaskID System.Int32 De id van de taak waarmee de lus is gestart.
ForkJoinContextID System.Int32 Een unieke id die wordt gebruikt om nesten en paren aan te geven voor gebeurtenissen met semantiek van fork/join.
totalIterations System.Int64 Het totale aantal iteraties

Parallel aanroepen begin

EVENT_DESCRIPTOR. Taak = 3

EVENT_DESCRIPTOR. Id = 3

Gebruikersgegevens

Naam Type Beschrijving
OriginatingTaskSchedulerID System.Int32 De id van de TaskScheduler waarmee de lus is gestart.
OriginatingTaskID System.Int32 De id van de taak waarmee de lus is gestart.
ForkJoinContextID System.Int32 Een unieke id die wordt gebruikt om nesten en paren aan te geven voor gebeurtenissen met semantiek van fork/join.
totalIterations System.Int64 Het totale aantal iteraties
operationType System.Int32 Geeft het type lus aan:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach
ActionCount System.Int32 Het aantal acties dat wordt uitgevoerd in de parallelle aanroep.

Einde van parallel aanroepen

EVENT_DESCRIPTOR. Taak = 4

EVENT_DESCRIPTOR. Id = 4

Gebruikersgegevens

Naam Type Beschrijving
OriginatingTaskSchedulerID System.Int32 De id van de TaskScheduler waarmee de lus is gestart.
OriginatingTaskID System.Int32 De id van de taak waarmee de lus is gestart.
ForkJoinContextID System.Int32 Een unieke id die wordt gebruikt om nesten en paren aan te geven voor gebeurtenissen met semantiek van fork/join.

PLINQ ETW-gebeurtenissen

De EVENT_HEADER. ProviderId GUID voor PLINQ is:

0x159eeeec, 0x4a14, 0x4418, 0xa8, 0xfe, 0xfa, 0xab, 0xcd, 0x98, 0x78, 0x87

Begin van parallelle query

EVENT_DESCRIPTOR. Taak = 1

EVENT_DESCRIPTOR. Id = 1

Gebruikersgegevens

Naam Type Beschrijving
OriginatingTaskSchedulerID System.Int32 De id van de TaskScheduler waarmee de lus is gestart.
OriginatingTaskID System.Int32 De id van de taak waarmee de lus is gestart.
QueryID System.Int32 Een unieke query-id.

Einde van parallelle query

EVENT_DESCRIPTOR. Taak = 2

EVENT_DESCRIPTOR. Id = 2

Gebruikersgegevens

Naam Type Beschrijving
OriginatingTaskSchedulerID System.Int32 De id van de TaskScheduler die de lus heeft gestart.
OriginatingTaskID System.Int32 De id van de taak waarmee de lus is gestart.
QueryID System.Int32 Een unieke query-id.

Zie ook