タスク並列ライブラリおよび PLINQ での ETW イベント
タスク並列ライブラリと PLINQ は、どちらも Event Trace for Windows (ETW) イベントを生成します。これらのイベントと Windows パフォーマンス最適化ツールなどのツールを使用すると、アプリケーションのプロファイリンやトラブルシューティングを行うことができます。 ただし、ほとんどの場合、並列アプリケーション コードのプロファイリングを行うには、Visual Studio Team Edition で 同時実行ビジュアライザー を使用する方法が最も適しています。
タスク並列ライブラリでの ETW イベント
EVENT_HEADER 構造体で、ParallelFor()、ParallelForEach()、および ParallelInvoke() によって生成されるイベントの ProviderId GUID を次に示します。
0x2e5dba47, 0xa3d2, 0x4d16, 0x8e, 0xe0, 0x66, 0x71, 0xff, 0xdc, 0xd7, 0xb5
並列ループの開始
EVENT_DESCRIPTOR.Task = 1
EVENT_DESCRIPTOR.Id = 1
ユーザー データ
名前 |
型 |
説明 |
---|---|---|
OriginatingTaskSchedulerID |
ループを開始した TaskScheduler の ID。 |
|
OriginatingTaskID |
ループを開始したタスクの ID。 |
|
ForkJoinContextID |
fork/join セマンティクスのあるイベントの入れ子とペアの関係を示すために使用される一意の識別子。 |
|
OperationType |
ループの種類。 1 = ParallelInvoke 2 = ParallelFor 3 = ParallelForEach |
|
InclusiveFrom |
ループ カウンターの開始値。 |
|
ExclusiveTo |
ループ カウンターの終了値。 |
並列ループの終了
EVENT_DESCRIPTOR.Task = 2
EVENT_DESCRIPTOR.Id = 2
ユーザー データ
名前 |
型 |
説明 |
---|---|---|
OriginatingTaskSchedulerID |
ループを開始した TaskScheduler の ID。 |
|
OriginatingTaskID |
ループを開始したタスクの ID。 |
|
ForkJoinContextID |
fork/join セマンティクスのあるイベントの入れ子とペアの関係を示すために使用される一意の識別子。 |
|
totalIterations |
イテレーションの総数。 |
並列呼び出しの開始
EVENT_DESCRIPTOR.Task = 3
EVENT_DESCRIPTOR.Id = 3
ユーザー データ
名前 |
型 |
説明 |
---|---|---|
OriginatingTaskSchedulerID |
ループを開始した TaskScheduler の ID。 |
|
OriginatingTaskID |
ループを開始したタスクの ID。 |
|
ForkJoinContextID |
fork/join セマンティクスのあるイベントの入れ子とペアの関係を示すために使用される一意の識別子。 |
|
totalIterations |
イテレーションの総数。 |
|
operationType |
ループの種類。 1 = ParallelInvoke 2 = ParallelFor 3 = ParallelForEach |
|
ActionCount |
並列呼び出しで実行されるアクションの数。 |
並列呼び出しの終了
EVENT_DESCRIPTOR.Task = 4
EVENT_DESCRIPTOR.Id = 4
ユーザー データ
名前 |
型 |
説明 |
---|---|---|
OriginatingTaskSchedulerID |
ループを開始した TaskScheduler の ID。 |
|
OriginatingTaskID |
ループを開始したタスクの ID。 |
|
ForkJoinContextID |
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
ユーザー データ
名前 |
型 |
説明 |
---|---|---|
OriginatingTaskSchedulerID |
ループを開始した TaskScheduler の ID。 |
|
OriginatingTaskID |
ループを開始したタスクの ID。 |
|
QueryID |
一意のクエリ識別子。 |
並列クエリの終了
EVENT_DESCRIPTOR.Task = 2
EVENT_DESCRIPTOR.Id = 2
ユーザー データ
名前 |
型 |
説明 |
---|---|---|
OriginatingTaskSchedulerID |
ループを開始した TaskScheduler の ID。 |
|
OriginatingTaskID |
ループを開始したタスクの ID。 |
|
QueryID |
一意のクエリ識別子。 |