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