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. |