작업 병렬 라이브러리 및 PLINQ의 ETW 이벤트
작업 병렬 라이브러리 및 PLINQ는 Windows Performance Analyzer 같은 도구로 응용 프로그램을 프로파일링하고 문제를 해결하는 데 사용할 수 있는 ETW(Windows용 이벤트 추적) 이벤트를 생성합니다. 그러나 대부분의 시나리오에서 병렬 응용 프로그램 코드를 프로파일링하는 최상의 방법은 Visual Studio Team Edition에서 동시성 시각화 도우미를 사용하는 것입니다.
작업 병렬 라이브러리 ETW 이벤트
ParallelFor(), ParallelForEach() 및 ParallelInvoke()에서 생성하는 이벤트에 대한 EVENT_HEADER 구조체의 ProviderId GUID는 다음과 같습니다.
0x2e5dba47, 0xa3d2, 0x4d16, 0x8e, 0xe0, 0x66, 0x71, 0xff, 0xdc, 0xd7, 0xb5
병렬 루프 시작
EVENT_DESCRIPTOR.Task = 1
EVENT_DESCRIPTOR.Id = 1
사용자 데이터
Name |
형식 |
설명 |
---|---|---|
OriginatingTaskSchedulerID |
루프를 시작한 TaskScheduler의 ID입니다. |
|
OriginatingTaskID |
루프를 시작한 작업의 ID입니다. |
|
ForkJoinContextID |
분기/조인 의미 체계를 사용하여 이벤트의 중첩과 쌍을 나타내는 데 사용되는 고유 식별자입니다. |
|
OperationType |
루프 형식을 나타냅니다. 1 = ParallelInvoke 2 = ParallelFor 3 = ParallelForEach |
|
InclusiveFrom |
루프 카운터의 시작 값입니다. |
|
ExclusiveTo |
루프 카운터의 끝 값입니다. |
병렬 루프 끝
EVENT_DESCRIPTOR.Task = 2
EVENT_DESCRIPTOR.Id = 2
사용자 데이터
Name |
형식 |
설명 |
---|---|---|
OriginatingTaskSchedulerID |
루프를 시작한 TaskScheduler의 ID입니다. |
|
OriginatingTaskID |
루프를 시작한 작업의 ID입니다. |
|
ForkJoinContextID |
분기/조인 의미 체계를 사용하여 이벤트의 중첩과 쌍을 나타내는 데 사용되는 고유 식별자입니다. |
|
totalIterations |
총 반복 수입니다. |
병렬 호출 시작
EVENT_DESCRIPTOR.Task = 3
EVENT_DESCRIPTOR.Id = 3
사용자 데이터
Name |
형식 |
설명 |
---|---|---|
OriginatingTaskSchedulerID |
루프를 시작한 TaskScheduler의 ID입니다. |
|
OriginatingTaskID |
루프를 시작한 작업의 ID입니다. |
|
ForkJoinContextID |
분기/조인 의미 체계를 사용하여 이벤트의 중첩과 쌍을 나타내는 데 사용되는 고유 식별자입니다. |
|
totalIterations |
총 반복 수입니다. |
|
operationType |
루프 형식을 나타냅니다. 1 = ParallelInvoke 2 = ParallelFor 3 = ParallelForEach |
|
ActionCount |
병렬 호출에서 실행될 작업의 수입니다. |
병렬 호출 끝
EVENT_DESCRIPTOR.Task = 4
EVENT_DESCRIPTOR.Id = 4
사용자 데이터
Name |
형식 |
설명 |
---|---|---|
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
사용자 데이터
Name |
형식 |
설명 |
---|---|---|
OriginatingTaskSchedulerID |
루프를 시작한 TaskScheduler의 ID입니다. |
|
OriginatingTaskID |
루프를 시작한 작업의 ID입니다. |
|
QueryID |
고유 쿼리 식별자입니다. |
병렬 쿼리 끝
EVENT_DESCRIPTOR.Task = 2
EVENT_DESCRIPTOR.Id = 2
사용자 데이터
Name |
형식 |
설명 |
---|---|---|
OriginatingTaskSchedulerID |
루프를 시작한 TaskScheduler의 ID입니다. |
|
OriginatingTaskID |
루프를 시작한 작업의 ID입니다. |
|
QueryID |
고유 쿼리 식별자입니다. |