Compartir a través de


Eventos ETW en Task Parallel Library y PLINQ

Tanto Task Parallel Library como PLINQ generan eventos ETW (Seguimiento de eventos de Windows) que puede utilizar para perfilar y solucionar problemas de aplicaciones con herramientas como el Analizador de rendimiento de Windows. Sin embargo, en la mayoría de los escenarios, la manera mejor de perfilar el código paralelo de aplicación es con Visualizador de simultaneidad en Visual Studio Team Edition.

Eventos ETW de Task Parallel Library

En la estructura EVENT_HEADER, el GUID ProviderId para los eventos generados por ParallelFor(), ParallelForEach() e ParallelInvoke() es:

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

Comienzo de bucle paralelo

EVENT_DESCRIPTOR.Task = 1

EVENT_DESCRIPTOR.Id = 1

Datos del usuario

Name

Tipo

Descripción

OriginatingTaskSchedulerID

System.Int32

El identificador del objeto TaskScheduler que inició el bucle.

OriginatingTaskID

System.Int32

El identificador de la tarea que inició el bucle.

ForkJoinContextID

System.Int32

El identificador único que se usa para indicar la anidación y los pares de eventos con semántica de bifurcación o combinación.

OperationType

System.Int32

Indica el tipo de bucle:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach

InclusiveFrom

System.Int64

El valor de inicio del contador de bucle

ExclusiveTo

System.Int64

El valor final del contador de bucle

Fin de bucle paralelo

EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2

Datos del usuario

Name

Tipo

Descripción

OriginatingTaskSchedulerID

System.Int32

El identificador del objeto TaskScheduler que inició el bucle.

OriginatingTaskID

System.Int32

El identificador de la tarea que inició el bucle.

ForkJoinContextID

System.Int32

El identificador único que se usa para indicar la anidación y los pares de eventos con semántica de bifurcación o combinación.

totalIterations

System.Int64

El número total de iteraciones.

Comienzo de Invoke paralela

EVENT_DESCRIPTOR.Task = 3

EVENT_DESCRIPTOR.Id = 3

Datos del usuario

Name

Tipo

Descripción

OriginatingTaskSchedulerID

System.Int32

El identificador del objeto TaskScheduler que inició el bucle.

OriginatingTaskID

System.Int32

El identificador de la tarea que inició el bucle.

ForkJoinContextID

System.Int32

El identificador único que se usa para indicar la anidación y los pares de eventos con semántica de bifurcación o combinación.

totalIterations

System.Int64

El número total de iteraciones.

operationType

System.Int32

Indica el tipo de bucle:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach

ActionCount

System.Int32

El número de acciones que se ejecutarán en la invocación paralela.

Fin de Invoke paralela

EVENT_DESCRIPTOR.Task = 4

EVENT_DESCRIPTOR.Id = 4

Datos del usuario

Name

Tipo

Descripción

OriginatingTaskSchedulerID

System.Int32

El identificador del objeto TaskScheduler que inició el bucle.

OriginatingTaskID

System.Int32

El identificador de la tarea que inició el bucle.

ForkJoinContextID

System.Int32

El identificador único que se usa para indicar la anidación y los pares de eventos con semántica de bifurcación o combinación.

Eventos ETW de PLINQ

El GUID EVENT_HEADER.ProviderId de PLINQ es:

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

Comienza la consulta paralela

EVENT_DESCRIPTOR.Task = 1

EVENT_DESCRIPTOR.Id = 1

Datos del usuario

Name

Tipo

Descripción

OriginatingTaskSchedulerID

System.Int32

El identificador del objeto TaskScheduler que inició el bucle.

OriginatingTaskID

System.Int32

El identificador de la tarea que inició el bucle.

QueryID

System.Int32

Un identificador de consulta único.

Fin de la consulta paralela

EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2

Datos del usuario

Name

Tipo

Descripción

OriginatingTaskSchedulerID

System.Int32

El identificador del objeto TaskScheduler que inició el bucle.

OriginatingTaskID

System.Int32

El identificador de la tarea que inició el bucle.

QueryID

System.Int32

Un identificador de consulta único.

Vea también

Conceptos

Task Parallel Library

Parallel LINQ (PLINQ)

Otros recursos

Eventos de ETW en .NET Framework