タスク並列ライブラリおよび PLINQ での ETW イベントETW Events in Task Parallel Library and PLINQ

タスク並列ライブラリおよび PLINQ は、どちらも Windows イベント トレーシング (ETW) イベントを生成します。ETW イベントは、Windows パフォーマンス アナライザーなどのツールを使用して、アプリケーションのプロファイルやトラブルシューティングに使用できます。Both the Task Parallel Library and PLINQ generate Event Trace for Windows (ETW) events that you can use to profile and troubleshoot applications by using tools such as the Windows Performance Analyzer. ただし、ほとんどのシナリオでは、並列アプリケーションコードをプロファイリングする最良の方法は、Visual Studio で同時実行ビジュアライザーを使用することです。However, in most scenarios, the best way to profile parallel application code is to use the Concurrency Visualizer in Visual Studio.

タスク並列ライブラリの ETW イベントTask Parallel Library ETW Events

EVENT_HEADER 構造体では、Parallel.ForParallel.ForEach、および Parallel.Invoke で生成されたイベントの ProviderId GUID は、次のとおりです。In the EVENT_HEADER structure, the ProviderId GUID for events generated by Parallel.For, Parallel.ForEach and Parallel.Invoke is:

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

並列ループの開始Parallel Loop Begin

EVENT_DESCRIPTOR.Task = 1EVENT_DESCRIPTOR.Task = 1

EVENT_DESCRIPTOR.Id = 1EVENT_DESCRIPTOR.Id = 1

ユーザー データUser Data

名前Name Type 説明Description
OriginatingTaskSchedulerIDOriginatingTaskSchedulerID System.Int32 ループを開始した TaskScheduler の ID。The ID of the TaskScheduler that started the loop.
OriginatingTaskIDOriginatingTaskID System.Int32 ループを開始したタスクの ID。The ID of the task that started the loop.
ForkJoinContextIDForkJoinContextID System.Int32 入れ子と fork/join セマンティクスでのイベントのペアを示すために使用される一意の識別子。A unique identifier used to indicate nesting and pairs for events with fork/join semantics.
OperationTypeOperationType System.Int32 ループの種類:Indicates the type of loop:

1 = ParallelInvoke1 = ParallelInvoke

2 = ParallelFor2 = ParallelFor

3 = ParallelForEach3 = ParallelForEach
InclusiveFromInclusiveFrom System.Int64 ループ カウンターの開始値The starting value of the loop counter
ExclusiveToExclusiveTo System.Int64 ループ カウンターの終了値The ending value of the loop counter

並列ループの終了Parallel Loop End

EVENT_DESCRIPTOR.Task = 2EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2EVENT_DESCRIPTOR.Id = 2

ユーザー データUser Data

名前Name Type 説明Description
OriginatingTaskSchedulerIDOriginatingTaskSchedulerID System.Int32 ループを開始した TaskScheduler の ID。The ID of the TaskScheduler that started the loop.
OriginatingTaskIDOriginatingTaskID System.Int32 ループを開始したタスクの ID。The ID of the task that started the loop.
ForkJoinContextIDForkJoinContextID System.Int32 入れ子と fork/join セマンティクスでのイベントのペアを示すために使用される一意の識別子。A unique identifier used to indicate nesting and pairs for events with fork/join semantics.
totalIterationstotalIterations System.Int64 イテレーションの合計数The total number of iterations

並列呼び出しの開始Parallel Invoke Begin

EVENT_DESCRIPTOR.Task = 3EVENT_DESCRIPTOR.Task = 3

EVENT_DESCRIPTOR.Id = 3EVENT_DESCRIPTOR.Id = 3

ユーザー データUser Data

名前Name Type 説明Description
OriginatingTaskSchedulerIDOriginatingTaskSchedulerID System.Int32 ループを開始した TaskScheduler の ID。The ID of the TaskScheduler that started the loop.
OriginatingTaskIDOriginatingTaskID System.Int32 ループを開始したタスクの ID。The ID of the task that started the loop.
ForkJoinContextIDForkJoinContextID System.Int32 入れ子と fork/join セマンティクスでのイベントのペアを示すために使用される一意の識別子。A unique identifier used to indicate nesting and pairs for events with fork/join semantics.
totalIterationstotalIterations System.Int64 イテレーションの合計数The total number of iterations
operationTypeoperationType System.Int32 ループの種類:Indicates the type of loop:

1 = ParallelInvoke1 = ParallelInvoke

2 = ParallelFor2 = ParallelFor

3 = ParallelForEach3 = ParallelForEach
ActionCountActionCount System.Int32 並列呼び出しで実行されるアクションの数。The number of actions that will be executed in the parallel invoke.

並列呼び出しの終了Parallel Invoke End

EVENT_DESCRIPTOR.Task = 4EVENT_DESCRIPTOR.Task = 4

EVENT_DESCRIPTOR.Id = 4EVENT_DESCRIPTOR.Id = 4

ユーザー データUser Data

名前Name Type 説明Description
OriginatingTaskSchedulerIDOriginatingTaskSchedulerID System.Int32 ループを開始した TaskScheduler の ID。The ID of the TaskScheduler that started the loop.
OriginatingTaskIDOriginatingTaskID System.Int32 ループを開始したタスクの ID。The ID of the task that started the loop.
ForkJoinContextIDForkJoinContextID System.Int32 入れ子と fork/join セマンティクスでのイベントのペアを示すために使用される一意の識別子。A unique identifier used to indicate nesting and pairs for events with fork/join semantics.

PLINQ ETW イベントPLINQ ETW Events

PLINQ の EVENT_HEADER.ProviderId GUID は次のとおりです。The EVENT_HEADER.ProviderId GUID for PLINQ is:

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

並列クエリの開始Parallel Query Begin

EVENT_DESCRIPTOR.Task = 1EVENT_DESCRIPTOR.Task = 1

EVENT_DESCRIPTOR.Id = 1EVENT_DESCRIPTOR.Id = 1

ユーザー データUser Data

名前Name Type 説明Description
OriginatingTaskSchedulerIDOriginatingTaskSchedulerID System.Int32 ループを開始した TaskScheduler の ID。The ID of the TaskScheduler that started the loop.
OriginatingTaskIDOriginatingTaskID System.Int32 ループを開始したタスクの ID。The ID of the task that started the loop.
QueryIDQueryID System.Int32 一意のクエリの識別子。A unique query identifier.

並列クエリの終了Parallel Query End

EVENT_DESCRIPTOR.Task = 2EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2EVENT_DESCRIPTOR.Id = 2

ユーザー データUser Data

名前Name Type 説明Description
OriginatingTaskSchedulerIDOriginatingTaskSchedulerID System.Int32 ループを開始した TaskScheduler の ID。The ID of the TaskScheduler that started the loop.
OriginatingTaskIDOriginatingTaskID System.Int32 ループを開始したタスクの ID。The ID of the task that started the loop.
QueryIDQueryID System.Int32 一意のクエリの識別子。A unique query identifier.

関連項目See also