Compartilhar via


Eventos ETW em biblioteca paralela de tarefas e PLINQ

A biblioteca paralela de tarefas e o PLINQ geram eventos de rastreamento de eventos para Windows (ETW) que você pode usar para criar o perfil e solucionar problemas de aplicativos usando ferramentas como o analisador de desempenho do Windows. No entanto, na maioria das situações, a melhor maneira de código do aplicativo em paralelo de perfil é usar o Visualizador de simultaneidade na equipe de Visual Studio Edition.

Eventos da tarefa paralelos biblioteca ETW

Na estrutura de EVENT_HEADER, o GUID de ProviderId de eventos gerados por ParallelFor(), ParallelForEach() e ParallelInvoke() é:

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

Início de Loop paralelo

EVENT_DESCRIPTOR.Tarefa = 1

EVENT_DESCRIPTOR.ID = 1

Dados do usuário

Nome

Tipo

Descrição

OriginatingTaskSchedulerID

System.Int32

A identificação do TaskScheduler que iniciou o loop.

OriginatingTaskID

System.Int32

A ID da tarefa que iniciou o loop.

ForkJoinContextID

System.Int32

Um identificador exclusivo usado para indicar o aninhamento e pares de eventos com a semântica de bifurcação/junção.

OperationType

System.Int32

Indica o tipo de loop:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach

InclusiveFrom

System.Int64

O valor inicial do contador de loop

ExclusiveTo

System.Int64

O valor final do contador de loop

Final do Loop paralelo

EVENT_DESCRIPTOR.Tarefa = 2

EVENT_DESCRIPTOR.ID = 2

Dados do usuário

Nome

Tipo

Descrição

OriginatingTaskSchedulerID

System.Int32

A identificação do TaskScheduler que iniciou o loop.

OriginatingTaskID

System.Int32

A ID da tarefa que iniciou o loop.

ForkJoinContextID

System.Int32

Um identificador exclusivo usado para indicar o aninhamento e pares de eventos com a semântica de bifurcação/junção.

totalIterations

System.Int64

O número total de iterações

Paralelo, invocar Begin

EVENT_DESCRIPTOR.Tarefa = 3

EVENT_DESCRIPTOR.ID = 3

Dados do usuário

Nome

Tipo

Descrição

OriginatingTaskSchedulerID

System.Int32

A identificação do TaskScheduler que iniciou o loop.

OriginatingTaskID

System.Int32

A ID da tarefa que iniciou o loop.

ForkJoinContextID

System.Int32

Um identificador exclusivo usado para indicar o aninhamento e pares de eventos com a semântica de bifurcação/junção.

totalIterations

System.Int64

O número total de iterações

operationType

System.Int32

Indica o tipo de loop:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach

ActionCount

System.Int32

O número de ações que serão executados no invoke paralelo.

Paralelo, invocar final

EVENT_DESCRIPTOR.Tarefa = 4

EVENT_DESCRIPTOR.ID = 4

Dados do usuário

Nome

Tipo

Descrição

OriginatingTaskSchedulerID

System.Int32

A identificação do TaskScheduler que iniciou o loop.

OriginatingTaskID

System.Int32

A ID da tarefa que iniciou o loop.

ForkJoinContextID

System.Int32

Um identificador exclusivo usado para indicar o aninhamento e pares de eventos com a semântica de bifurcação/junção.

Eventos ETW do PLINQ

EVENT_HEADER.GUID de ProviderId para PLINQ é:

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

Início de consulta paralela

EVENT_DESCRIPTOR.Tarefa = 1

EVENT_DESCRIPTOR.ID = 1

Dados do usuário

Nome

Tipo

Descrição

OriginatingTaskSchedulerID

System.Int32

A identificação do TaskScheduler que iniciou o loop.

OriginatingTaskID

System.Int32

A ID da tarefa que iniciou o loop.

QueryID

System.Int32

Um identificador exclusivo de consulta.

Final de consulta paralela

EVENT_DESCRIPTOR.Tarefa = 2

EVENT_DESCRIPTOR.ID = 2

Dados do usuário

Nome

Tipo

Descrição

OriginatingTaskSchedulerID

System.Int32

A identificação do TaskScheduler que iniciou o loop.

OriginatingTaskID

System.Int32

A ID da tarefa que iniciou o loop.

QueryID

System.Int32

Um identificador exclusivo de consulta.

Consulte também

Conceitos

Biblioteca paralela de tarefas

Parallel LINQ PLINQ)

Outros recursos

Eventos ETW o.NET Framework