タスク並列ライブラリおよび 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

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

ユーザー データ

名前

説明

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

ユーザー データ

名前

説明

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

ユーザー データ

名前

説明

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

ユーザー データ

名前

説明

OriginatingTaskSchedulerID

System.Int32

ループを開始した TaskScheduler の ID。

OriginatingTaskID

System.Int32

ループを開始したタスクの ID。

QueryID

System.Int32

一意のクエリ識別子。

並列クエリの終了

EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2

ユーザー データ

名前

説明

OriginatingTaskSchedulerID

System.Int32

ループを開始した TaskScheduler の ID。

OriginatingTaskID

System.Int32

ループを開始したタスクの ID。

QueryID

System.Int32

一意のクエリ識別子。

参照

概念

タスク並列ライブラリ

Parallel LINQ (PLINQ)

その他の技術情報

.NET Framework の ETW イベント