Partager via


Événements ETW dans la bibliothèque parallèle de tâches et PLINQ

La bibliothèque parallèle de tâches et PLINQ génèrent les événements de suivi d’événements pour Windows (ETW) que vous pouvez utiliser pour profiler et dépanner des applications à l’aide d’outils tels que Windows Performance Analyzer. Cependant, dans la plupart des scénarios, la meilleure façon de profiler du code d’application parallèle est d’utiliser le Visualiseur concurrentiel dans Visual Studio.

Événements ETW de la bibliothèque parallèle de tâches

Dans la structure EVENT_HEADER, le GUID ProviderId pour les événements générés par Parallel.For, Parallel.ForEach et Parallel.Invoke est :

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

Début de la boucle parallèle

EVENT_DESCRIPTOR.Task = 1

EVENT_DESCRIPTOR.Id = 1

Données utilisateur

Nom Type Description
OriginatingTaskSchedulerID System.Int32 ID du TaskScheduler qui a démarré la boucle.
OriginatingTaskID System.Int32 ID de la tâche qui a démarré la boucle.
ForkJoinContextID System.Int32 Identificateur unique utilisé pour indiquer l’imbrication et les paires pour les événements comportant des sémantiques de bifurcation/jonction.
OperationType System.Int32 Indique le type de boucle :

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach
InclusiveFrom System.Int64 Valeur de départ du compteur de boucles
ExclusiveTo System.Int64 Valeur de fin du compteur de boucles

Fin de la boucle parallèle

EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2

Données utilisateur

Nom Type Description
OriginatingTaskSchedulerID System.Int32 ID du TaskScheduler qui a démarré la boucle.
OriginatingTaskID System.Int32 ID de la tâche qui a démarré la boucle.
ForkJoinContextID System.Int32 Identificateur unique utilisé pour indiquer l’imbrication et les paires pour les événements comportant des sémantiques de bifurcation/jonction.
totalIterations System.Int64 Nombre total d’itérations

Début de l’appel parallèle

EVENT_DESCRIPTOR.Task = 3

EVENT_DESCRIPTOR.Id = 3

Données utilisateur

Nom Type Description
OriginatingTaskSchedulerID System.Int32 ID du TaskScheduler qui a démarré la boucle.
OriginatingTaskID System.Int32 ID de la tâche qui a démarré la boucle.
ForkJoinContextID System.Int32 Identificateur unique utilisé pour indiquer l’imbrication et les paires pour les événements comportant des sémantiques de bifurcation/jonction.
totalIterations System.Int64 Nombre total d’itérations
operationType System.Int32 Indique le type de boucle :

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach
ActionCount System.Int32 Nombre d’actions qui seront exécutées dans l’appel parallèle.

Fin de l’appel parallèle

EVENT_DESCRIPTOR.Task = 4

EVENT_DESCRIPTOR.Id = 4

Données utilisateur

Nom Type Description
OriginatingTaskSchedulerID System.Int32 ID du TaskScheduler qui a démarré la boucle.
OriginatingTaskID System.Int32 ID de la tâche qui a démarré la boucle.
ForkJoinContextID System.Int32 Identificateur unique utilisé pour indiquer l’imbrication et les paires pour les événements comportant des sémantiques de bifurcation/jonction.

Événements ETW de PLINQ

Le GUID EVENT_HEADER.ProviderId pour PLINQ est :

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

Début de requête parallèle

EVENT_DESCRIPTOR.Task = 1

EVENT_DESCRIPTOR.Id = 1

Données utilisateur

Nom Type Description
OriginatingTaskSchedulerID System.Int32 ID du TaskScheduler qui a démarré la boucle.
OriginatingTaskID System.Int32 ID de la tâche qui a démarré la boucle.
QueryID System.Int32 Identificateur de requête unique.

Fin de requête parallèle

EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2

Données utilisateur

Nom Type Description
OriginatingTaskSchedulerID System.Int32 ID du TaskScheduler qui a démarré la boucle.
OriginatingTaskID System.Int32 ID de la tâche qui a démarré la boucle.
QueryID System.Int32 Identificateur de requête unique.

Voir aussi