工作平行程式庫和 PLINQ 中的 ETW 事件
「工作平行程式庫」與 PLINQ 都會產生「Windows 事件追蹤」(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 |
唯一識別項,用來表示具有分叉/加入語意之事件的巢狀和配對。 |
|
OperationType |
指出迴圈型別: 1 = ParallelInvoke 2 = ParallelFor 3 = ParallelForEach |
|
InclusiveFrom |
迴圈計數器的起始值 |
|
ExclusiveTo |
迴圈計數器的結束值 |
平行迴圈結束
EVENT_DESCRIPTOR.Task = 2
EVENT_DESCRIPTOR.Id = 2
使用者資料
名稱 |
型別 |
描述 |
---|---|---|
OriginatingTaskSchedulerID |
啟動迴圈之 TaskScheduler 的 ID。 |
|
OriginatingTaskID |
啟動迴圈之工作的 ID。 |
|
ForkJoinContextID |
唯一識別項,用來表示具有分叉/加入語意之事件的巢狀和配對。 |
|
totalIterations |
反覆項目的總數 |
平行叫用開始
EVENT_DESCRIPTOR.Task = 3
EVENT_DESCRIPTOR.Id = 3
使用者資料
名稱 |
型別 |
描述 |
---|---|---|
OriginatingTaskSchedulerID |
啟動迴圈之 TaskScheduler 的 ID。 |
|
OriginatingTaskID |
啟動迴圈之工作的 ID。 |
|
ForkJoinContextID |
唯一識別項,用來表示具有分叉/加入語意之事件的巢狀和配對。 |
|
totalIterations |
反覆項目的總數 |
|
operationType |
指出迴圈型別: 1 = ParallelInvoke 2 = ParallelFor 3 = ParallelForEach |
|
ActionCount |
將在平行叫用中執行的動作數目。 |
平行叫用結束
EVENT_DESCRIPTOR.Task = 4
EVENT_DESCRIPTOR.Id = 4
使用者資料
名稱 |
型別 |
描述 |
---|---|---|
OriginatingTaskSchedulerID |
啟動迴圈之 TaskScheduler 的 ID。 |
|
OriginatingTaskID |
啟動迴圈之工作的 ID。 |
|
ForkJoinContextID |
唯一識別項,用來表示具有分叉/加入語意之事件的巢狀和配對。 |
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 |
唯一查詢識別項。 |