Eventos ETW na Biblioteca Paralela de Tarefas e PLINQ
Tanto a Biblioteca Paralela de Tarefas como o PLINQ geram eventos de Rastreio de Eventos para Windows (ETW) que pode utilizar para criar perfis e resolver problemas de aplicações com ferramentas como o Windows Analisador de Desempenho. No entanto, na maioria dos cenários, a melhor forma de criar perfis de código de aplicação paralela é utilizar o Visualizador de Simultaneidade no Visual Studio.
Eventos ETW da Biblioteca Paralela de Tarefas
Na estrutura EVENT_HEADER, o GUID providerId para eventos gerados pelo Parallel.Fore Parallel.ForEachParallel.Invoke é:
0x2e5dba47, 0xa3d2, 0x4d16, 0x8e, 0xe0, 0x66, 0x71, 0xff, 0xdc, 0xd7, 0xb5
Início do Ciclo Paralelo
EVENT_DESCRIPTOR. Tarefa = 1
EVENT_DESCRIPTOR. ID = 1
Dados do Utilizador
Nome | Tipo | Descrição |
---|---|---|
OriginingTaskSchedulerID | System.Int32 | O ID do TaskScheduler que iniciou o ciclo. |
OriginingTaskID | System.Int32 | O ID da tarefa que iniciou o ciclo. |
ForkJoinContextID | System.Int32 | Um identificador exclusivo utilizado para indicar aninhamentos e pares para eventos com semântica fork/join. |
Tipo de Operação | System.Int32 | Indica o tipo de ciclo: 1 = ParallelInvoke 2 = ParallelFor 3 = ParallelForEach |
InclusiveFrom | System.Int64 | O valor inicial do contador de ciclos |
ExclusiveTo | System.Int64 | O valor final do contador de ciclos |
Fim do Ciclo Paralelo
EVENT_DESCRIPTOR. Tarefa = 2
EVENT_DESCRIPTOR. ID = 2
Dados do Utilizador
Nome | Tipo | Descrição |
---|---|---|
OriginingTaskSchedulerID | System.Int32 | O ID do TaskScheduler que iniciou o ciclo. |
OriginingTaskID | System.Int32 | O ID da tarefa que iniciou o ciclo. |
ForkJoinContextID | System.Int32 | Um identificador exclusivo utilizado para indicar aninhamentos e pares para eventos com semântica fork/join. |
totalIterations | System.Int64 | O número total de iterações |
Início da Invocação Paralela
EVENT_DESCRIPTOR. Tarefa = 3
EVENT_DESCRIPTOR. ID = 3
Dados do Utilizador
Nome | Tipo | Descrição |
---|---|---|
OriginingTaskSchedulerID | System.Int32 | O ID do TaskScheduler que iniciou o ciclo. |
OriginingTaskID | System.Int32 | O ID da tarefa que iniciou o ciclo. |
ForkJoinContextID | System.Int32 | Um identificador exclusivo utilizado para indicar aninhamentos e pares para eventos com semântica fork/join. |
totalIterations | System.Int64 | O número total de iterações |
operationType | System.Int32 | Indica o tipo de ciclo: 1 = ParallelInvoke 2 = ParallelFor 3 = ParallelForEach |
ActionCount | System.Int32 | O número de ações que serão executadas na invocação paralela. |
Fim da Invocação Paralela
EVENT_DESCRIPTOR. Tarefa = 4
EVENT_DESCRIPTOR. ID = 4
Dados do Utilizador
Nome | Tipo | Descrição |
---|---|---|
OriginingTaskSchedulerID | System.Int32 | O ID do TaskScheduler que iniciou o ciclo. |
OriginingTaskID | System.Int32 | O ID da tarefa que iniciou o ciclo. |
ForkJoinContextID | System.Int32 | Um identificador exclusivo utilizado para indicar aninhamentos e pares para eventos com semântica fork/join. |
Eventos PLINQ ETW
O EVENT_HEADER. O GUID providerId para PLINQ é:
0x159eeeec, 0x4a14, 0x4418, 0xa8, 0xfe, 0xfa, 0xab, 0xcd, 0x98, 0x78, 0x87
Início da Consulta Paralela
EVENT_DESCRIPTOR. Tarefa = 1
EVENT_DESCRIPTOR. ID = 1
Dados do Utilizador
Nome | Tipo | Descrição |
---|---|---|
OriginingTaskSchedulerID | System.Int32 | O ID do TaskScheduler que iniciou o ciclo. |
OriginingTaskID | System.Int32 | O ID da tarefa que iniciou o ciclo. |
QueryID | System.Int32 | Um identificador de consulta exclusivo. |
Fim da Consulta Paralela
EVENT_DESCRIPTOR. Tarefa = 2
EVENT_DESCRIPTOR. ID = 2
Dados do Utilizador
Nome | Tipo | Descrição |
---|---|---|
OriginingTaskSchedulerID | System.Int32 | O ID do TaskScheduler que iniciou o ciclo. |
OriginingTaskID | System.Int32 | O ID da tarefa que iniciou o ciclo. |
QueryID | System.Int32 | Um identificador de consulta exclusivo. |