Condividi tramite


Eventi ETW nella libreria TPL (Task Parallel Library) e PLINQ

La libreria TPL (Task Parallel Library) e PLINQ generano entrambi eventi ETW (Event Trace for Windows) che è possibile utilizzare per profilare e risolvere i problemi relativi ad applicazioni tramite strumenti quale l'Analizzatore prestazioni Windows. Tuttavia, nella maggior parte degli scenari, il modo migliore per profilare il codice dell'applicazione parallela consiste nell'utilizzo di Visualizzatore di concorrenze in Visual Studio Team Edition.

Eventi ETW della libreria TPL (Task Parallel Library)

Nella struttura EVENT_HEADER, il GUID di ProviderId per gli eventi generati da ParallelFor(), ParallelForEach() e ParallelInvoke() è:

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

Inizio del ciclo parallelo

EVENT_DESCRIPTOR.Task = 1

EVENT_DESCRIPTOR.Id = 1

Dati utente

Nome

Tipo

Descrizione

OriginatingTaskSchedulerID

System.Int32

ID dell'oggetto TaskScheduler che ha avviato il ciclo.

OriginatingTaskID

System.Int32

ID dell'attività che ha avviato il ciclo.

ForkJoinContextID

System.Int32

Identificatore univoco utilizzato per indicare l'annidamento e coppie per gli eventi con semantica di divisione/unione.

OperationType

System.Int32

Indica il tipo di ciclo:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach

InclusiveFrom

System.Int64

Valore iniziale del contatore di cicli.

ExclusiveTo

System.Int64

Valore finale del contatore di cicli.

Fine del ciclo parallelo

EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2

Dati utente

Nome

Tipo

Descrizione

OriginatingTaskSchedulerID

System.Int32

ID dell'oggetto TaskScheduler che ha avviato il ciclo.

OriginatingTaskID

System.Int32

ID dell'attività che ha avviato il ciclo.

ForkJoinContextID

System.Int32

Identificatore univoco utilizzato per indicare l'annidamento e coppie per gli eventi con semantica di divisione/unione.

totalIterations

System.Int64

Numero totale di iterazioni.

Inizio della chiamata parallela

EVENT_DESCRIPTOR.Task = 3

EVENT_DESCRIPTOR.Id = 3

Dati utente

Nome

Tipo

Descrizione

OriginatingTaskSchedulerID

System.Int32

ID dell'oggetto TaskScheduler che ha avviato il ciclo.

OriginatingTaskID

System.Int32

ID dell'attività che ha avviato il ciclo.

ForkJoinContextID

System.Int32

Identificatore univoco utilizzato per indicare l'annidamento e coppie per gli eventi con semantica di divisione/unione.

totalIterations

System.Int64

Numero totale di iterazioni.

operationType

System.Int32

Indica il tipo di ciclo:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach

ActionCount

System.Int32

Numero di azioni che saranno eseguite nella chiamata parallela.

Fine della chiamata parallela

EVENT_DESCRIPTOR.Task = 4

EVENT_DESCRIPTOR.Id = 4

Dati utente

Nome

Tipo

Descrizione

OriginatingTaskSchedulerID

System.Int32

ID dell'oggetto TaskScheduler che ha avviato il ciclo.

OriginatingTaskID

System.Int32

ID dell'attività che ha avviato il ciclo.

ForkJoinContextID

System.Int32

Identificatore univoco utilizzato per indicare l'annidamento e coppie per gli eventi con semantica di divisione/unione.

Eventi ETW di PLINQ

Il GUID di EVENT_HEADER.ProviderId per PLINQ è:

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

Inizio della query parallela

EVENT_DESCRIPTOR.Task = 1

EVENT_DESCRIPTOR.Id = 1

Dati utente

Nome

Tipo

Descrizione

OriginatingTaskSchedulerID

System.Int32

ID dell'oggetto TaskScheduler che ha avviato il ciclo.

OriginatingTaskID

System.Int32

ID dell'attività che ha avviato il ciclo.

QueryID

System.Int32

Identificatore di query univoco.

Fine della query parallela

EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2

Dati utente

Nome

Tipo

Descrizione

OriginatingTaskSchedulerID

System.Int32

ID dell'oggetto TaskScheduler che ha avviato il ciclo.

OriginatingTaskID

System.Int32

ID dell'attività che ha avviato il ciclo.

QueryID

System.Int32

Identificatore di query univoco.

Vedere anche

Concetti

Task Parallel Library

Parallel LINQ (PLINQ)

Altre risorse

Eventi ETW in .NET Framework