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 |
A identificação do TaskScheduler que iniciou o loop. |
|
OriginatingTaskID |
A ID da tarefa que iniciou o loop. |
|
ForkJoinContextID |
Um identificador exclusivo usado para indicar o aninhamento e pares de eventos com a semântica de bifurcação/junção. |
|
OperationType |
Indica o tipo de loop: 1 = ParallelInvoke 2 = ParallelFor 3 = ParallelForEach |
|
InclusiveFrom |
O valor inicial do contador de loop |
|
ExclusiveTo |
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 |
A identificação do TaskScheduler que iniciou o loop. |
|
OriginatingTaskID |
A ID da tarefa que iniciou o loop. |
|
ForkJoinContextID |
Um identificador exclusivo usado para indicar o aninhamento e pares de eventos com a semântica de bifurcação/junção. |
|
totalIterations |
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 |
A identificação do TaskScheduler que iniciou o loop. |
|
OriginatingTaskID |
A ID da tarefa que iniciou o loop. |
|
ForkJoinContextID |
Um identificador exclusivo usado para indicar o aninhamento e pares de eventos com a semântica de bifurcação/junção. |
|
totalIterations |
O número total de iterações |
|
operationType |
Indica o tipo de loop: 1 = ParallelInvoke 2 = ParallelFor 3 = ParallelForEach |
|
ActionCount |
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 |
A identificação do TaskScheduler que iniciou o loop. |
|
OriginatingTaskID |
A ID da tarefa que iniciou o loop. |
|
ForkJoinContextID |
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 |
A identificação do TaskScheduler que iniciou o loop. |
|
OriginatingTaskID |
A ID da tarefa que iniciou o loop. |
|
QueryID |
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 |
A identificação do TaskScheduler que iniciou o loop. |
|
OriginatingTaskID |
A ID da tarefa que iniciou o loop. |
|
QueryID |
Um identificador exclusivo de consulta. |
Consulte também
Conceitos
Biblioteca paralela de tarefas