Dela via


ETW-händelser i aktivitetsparallellt bibliotek och PLINQ

Både Aktivitetsparallellt bibliotek och PLINQ genererar händelsespårning för Windows-händelser (ETW) som du kan använda för att profilera och felsöka program med hjälp av verktyg som Windows Prestandaanalys. I de flesta fall är dock det bästa sättet att profilera parallell programkod att använda Concurrency Visualizer i Visual Studio.

ETW-händelser för aktivitetsparallellt bibliotek

I den EVENT_HEADER strukturen är ProviderId-GUID:t för händelser som genereras av Parallel.Foroch Parallel.ForEachParallel.Invoke :

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

Parallell loop börjar

EVENT_DESCRIPTOR. Uppgift = 1

EVENT_DESCRIPTOR. ID = 1

Användardata

Namn Typ Beskrivning
OriginatingTaskSchedulerID System.Int32 ID:t för TaskScheduler som startade loopen.
OriginatingTaskID System.Int32 ID:t för uppgiften som startade loopen.
ForkJoinContextID System.Int32 En unik identifierare som används för att ange kapsling och par för händelser med förgrening/kopplingssemantik.
Åtgärdstyp System.Int32 Anger typ av loop:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach
InclusiveFrån System.Int64 Startvärdet för loopräknaren
ExclusiveTo System.Int64 Slutvärdet för loopräknaren

Parallell loopslut

EVENT_DESCRIPTOR. Uppgift = 2

EVENT_DESCRIPTOR. ID = 2

Användardata

Namn Typ Beskrivning
OriginatingTaskSchedulerID System.Int32 ID:t för TaskScheduler som startade loopen.
OriginatingTaskID System.Int32 ID:t för uppgiften som startade loopen.
ForkJoinContextID System.Int32 En unik identifierare som används för att ange kapsling och par för händelser med förgrening/kopplingssemantik.
totalIterations System.Int64 Det totala antalet iterationer

Parallell invoke begin

EVENT_DESCRIPTOR. Uppgift = 3

EVENT_DESCRIPTOR. ID = 3

Användardata

Namn Typ Beskrivning
OriginatingTaskSchedulerID System.Int32 ID:t för TaskScheduler som startade loopen.
OriginatingTaskID System.Int32 ID:t för uppgiften som startade loopen.
ForkJoinContextID System.Int32 En unik identifierare som används för att ange kapsling och par för händelser med förgrening/kopplingssemantik.
totalIterations System.Int64 Det totala antalet iterationer
operationType System.Int32 Anger typ av loop:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach
ActionCount System.Int32 Antalet åtgärder som ska köras i den parallella anropet.

Parallell anropsslut

EVENT_DESCRIPTOR. Uppgift = 4

EVENT_DESCRIPTOR. ID = 4

Användardata

Namn Typ Beskrivning
OriginatingTaskSchedulerID System.Int32 ID:t för TaskScheduler som startade loopen.
OriginatingTaskID System.Int32 ID:t för uppgiften som startade loopen.
ForkJoinContextID System.Int32 En unik identifierare som används för att ange kapsling och par för händelser med förgrening/kopplingssemantik.

PLINQ ETW-händelser

Den EVENT_HEADER. ProviderId GUID för PLINQ är:

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

Parallell fråga börjar

EVENT_DESCRIPTOR. Uppgift = 1

EVENT_DESCRIPTOR. ID = 1

Användardata

Namn Typ Beskrivning
OriginatingTaskSchedulerID System.Int32 ID:t för TaskScheduler som startade loopen.
OriginatingTaskID System.Int32 ID:t för uppgiften som startade loopen.
QueryID System.Int32 En unik frågeidentifierare.

Parallell frågeslut

EVENT_DESCRIPTOR. Uppgift = 2

EVENT_DESCRIPTOR. ID = 2

Användardata

Namn Typ Beskrivning
OriginatingTaskSchedulerID System.Int32 ID:t för TaskScheduler som startade loopen.
OriginatingTaskID System.Int32 ID:t för uppgiften som startade loopen.
QueryID System.Int32 En unik frågeidentifierare.

Se även