タスク並列ライブラリおよび PLINQ での ETW イベント

タスク並列ライブラリおよび PLINQ は、どちらも Windows イベント トレーシング (ETW) イベントを生成します。ETW イベントは、Windows パフォーマンス アナライザーなどのツールを使用して、アプリケーションのプロファイルやトラブルシューティングに使用できます。 ただし、ほとんどのシナリオでは、並列アプリケーション コードをプロファイルする最善の方法は、Visual Studio でコンカレンシー ビジュアライザーを使用することです。

タスク並列ライブラリの ETW イベント

EVENT_HEADER 構造体では、Parallel.ForParallel.ForEach、および Parallel.Invoke で生成されたイベントの ProviderId GUID は、次のとおりです。

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

並列ループの開始

EVENT_DESCRIPTOR.Task = 1

EVENT_DESCRIPTOR.Id = 1

ユーザー データ

名前 Type 説明
OriginatingTaskSchedulerID System.Int32 ループを開始した TaskScheduler の ID。
OriginatingTaskID System.Int32 ループを開始したタスクの ID。
ForkJoinContextID System.Int32 入れ子と fork/join セマンティクスでのイベントのペアを示すために使用される一意の識別子。
OperationType System.Int32 ループの種類:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach
InclusiveFrom System.Int64 ループ カウンターの開始値
ExclusiveTo System.Int64 ループ カウンターの終了値

並列ループの終了

EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2

ユーザー データ

名前 Type 説明
OriginatingTaskSchedulerID System.Int32 ループを開始した TaskScheduler の ID。
OriginatingTaskID System.Int32 ループを開始したタスクの ID。
ForkJoinContextID System.Int32 入れ子と fork/join セマンティクスでのイベントのペアを示すために使用される一意の識別子。
totalIterations System.Int64 イテレーションの合計数

並列呼び出しの開始

EVENT_DESCRIPTOR.Task = 3

EVENT_DESCRIPTOR.Id = 3

ユーザー データ

名前 Type 説明
OriginatingTaskSchedulerID System.Int32 ループを開始した TaskScheduler の ID。
OriginatingTaskID System.Int32 ループを開始したタスクの ID。
ForkJoinContextID System.Int32 入れ子と fork/join セマンティクスでのイベントのペアを示すために使用される一意の識別子。
totalIterations System.Int64 イテレーションの合計数
operationType System.Int32 ループの種類:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach
ActionCount System.Int32 並列呼び出しで実行されるアクションの数。

並列呼び出しの終了

EVENT_DESCRIPTOR.Task = 4

EVENT_DESCRIPTOR.Id = 4

ユーザー データ

名前 Type 説明
OriginatingTaskSchedulerID System.Int32 ループを開始した TaskScheduler の ID。
OriginatingTaskID System.Int32 ループを開始したタスクの ID。
ForkJoinContextID System.Int32 入れ子と fork/join セマンティクスでのイベントのペアを示すために使用される一意の識別子。

PLINQ ETW イベント

PLINQ の EVENT_HEADER.ProviderId GUID は次のとおりです。

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

並列クエリの開始

EVENT_DESCRIPTOR.Task = 1

EVENT_DESCRIPTOR.Id = 1

ユーザー データ

名前 Type 説明
OriginatingTaskSchedulerID System.Int32 ループを開始した TaskScheduler の ID。
OriginatingTaskID System.Int32 ループを開始したタスクの ID。
QueryID System.Int32 一意のクエリの識別子。

並列クエリの終了

EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2

ユーザー データ

名前 Type 説明
OriginatingTaskSchedulerID System.Int32 ループを開始した TaskScheduler の ID。
OriginatingTaskID System.Int32 ループを開始したタスクの ID。
QueryID System.Int32 一意のクエリの識別子。

関連項目