タスク並列ライブラリおよび PLINQ での ETW イベント
タスク並列ライブラリおよび PLINQ は、どちらも Windows イベント トレーシング (ETW) イベントを生成します。ETW イベントは、Windows パフォーマンス アナライザーなどのツールを使用して、アプリケーションのプロファイルやトラブルシューティングに使用できます。 ただし、ほとんどのシナリオでは、並列アプリケーション コードをプロファイルする最善の方法は、Visual Studio でコンカレンシー ビジュアライザーを使用することです。
タスク並列ライブラリの ETW イベント
EVENT_HEADER 構造体では、Parallel.For、Parallel.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 | 一意のクエリの識別子。 |
関連項目
.NET