핵심 사용률: 유휴 시간
이 항목을 사용하여 사용량이 낮은 CPU 코어 또는 스레드를 식별합니다. 모든 CPU 코어가 한 시간 동안 유용한 작업을 100% 수행하지 않는 경우 개선할 여지가 있습니다. 유휴 시간 섹션을 식별하고 작업으로 채운 다음 독립적인 작업이 동시에 실행 중인지 확인할 수 있는 경우 제목에 대해 상당한 성능 향상을 얻을 수 있습니다. 다행히 핵심에서 유휴 시간을 쉽게 찾을 수 있습니다. 이러한 위치를 식별하면 제목이 불 필요 없이 차단되거나 다른 작업을 처리하기 위한 순환이 있는지를 확인하는 데 도움이 됩니다.
PIX(Xbox용 성능 조사자)
Xbox용 PIX(성능 조사기)의 시간 표시 막대 보기에는 CPU 코어의 사용 방법과 해당 코어의 개별 스레드 점유율이 표시됩니다. 다음 단계에 따라 스레드를 조사합니다.
일반적인 단계 항목의 단계를 따라 타이밍 캡처를 만듭니다.
축소된 보기에서 시작하여 CPU 핵심 시간 표시줄이 주로 비어 있는 구역을 검토하여 실행 중이지 않은 코드를 인식합니다. 그림 1에서와 같이 코어 3개는 작업을 수행하지 않습니다.
그림 1. CPU 3이 유휴 상태인 CPU 시간대를 표시하는 PIX 타이밍 캡처 표시
조사할 프레임이 표시될 때까지 확대합니다. 그림 2와 같이 Pix는 초당 60프레임(FPS)으로 실행되는 예제의 단일 프레임으로 확대됩니다.
그림 2. 유휴 코어 및 저활용 코어를 보여주는 단일 프레임으로 확대된 PIX 타이밍 캡처 표시
참고 항목
PIX 시간 표시줄에서 요소를 두 번 클릭하면 그림 2의 프레임 302 마커와 같이 해당 요소의 지속 시간까지 보기가 자동으로 확대축소됩니다.
그림 2에서, 코어 0과 코어 4의 시간대가 채워져 있습니다. 즉, 코어 수가 100%에 가깝다는 의미입니다. 코어 1, 2, 5, 6은 공백이 있으며 약 25%에서 실행됩니다.
스레드 시간 표시줄에서 개별 스레드 동작을 검토합니다. 그림 3과 같이 100%에 가깝게 실행될 수 있다고 생각되는 스레드에 집중할 수 있습니다.
그림 3. 992를 제외한 각 스레드에 있는 스레드 시간 표시줄과 스톨의 4ms로 확대/축소하는 것을 보여줍니다.
스레드 실행의 각 부분 위에 있는 서로 다른 색 막대는 스레드가 실행되고 있는 코어를 나타냅니다. 위쪽 두 개의 어두운 금색 스레드는두 스레드가 같은 중심에서 작동한다는 의미입니다. 위쪽 막대에 마우스를 다가 코어 번호를 표시합니다. 스레드 1120 및 1124는 그림 2에 표시된 같이 코어 4에서 변경됩니다.
이 시점에서 스레드 잠금 항목에서 설명하는 단계를 사용하여 실행을 중지하는 코드 줄을 좁힐 수 있습니다. 스레드가 새 작업을 기다리는 중일 때 CPU 코어가 유휴 상태인 경우 다른 스레드의 스레드 정보를 조정하여 이 핵심에서 시간을 예약하거나 이 핵심에서 처리하기 위한 추가 작업을 준비합니다.
WPA(Windows Performance Analyzer)
WPA(Windows Performance Analyzer)에는 제목에 CPU별 CPU 사용 현황(Precise) 사용률 및 CPU 사용 현황(Precise) Utilization by Process이라는 두 가지 기본 스레드가 있습니다.
CPU별 CPU 사용 현황(Precise) 사용률은 코어와 관련된 데이터를 보여 줍니다. 따라서 스레드가 실행될 추가 공간의 위치를 빠르게 알 수 있습니다. 프로세스, 스레드별 PU 사용량(Precise) 사용률,는 유휴 상태인 스레드를 표시하거나 코어를 호깅하는 스레드를 보여 줍니다. 검토를 위해 다음 단계를 따르세요.
일반적인 단계 항목의 단계를 따라 ETL(이벤트 트레이싱 로그) 파일을 생성합니다.
일반적인 단계 항목에 설명된 ThreadUtilization.wpaProfile WPA 프로필을 적용합니다. 프로필을 적용한 후 그림 5와 같이 새 분석 탭이 나타납니다.
그림 5. WPA의 ThreadUtilization 프로필의 기본 보기 표시
제대로 사용되지 않는 CPU 코어에 포커스를 맞추는 단계
CPU별 CPU 사용 현황(Precise) 사용률 보기에서 CPU 사용 현황(%) 열을 사용하여 그림 6에 표시된 것보다 사용량이 낮은 CPU 코어를 찾을 수 있습니다. 백분율은 코어당이 아니라 전체 CPU의 100%를 기준으로 합니다. 따라서 단일 코어에 대해 14.28%는 사용할 수 있는 7개의 CPU 코어(100%/7개의 CPU 코어 = 14.28%)가 있기 때문에 100%로 실행되는 코어를 나타냅니다.
그림 6. 코어 9만 100%에서 실행 중인 CPU별 사용률 표시
CPU 코어가 유휴 상태이거나 사용 중인매우 다른 그래프의 영역을 확대합니다.
데이터 테이블에 있는 새 스레드 스택(프레임 태그) 항목을 확장하여 제목이 CPU를 제어하는 위치를 그림 7과 같이 표시합니다. CPU 사용량(%) 열은 전체 소요 시간의 백분율을 코어 당이 아니라 전체 CPU에 상대적인 100%로 표시합니다.
그림 7.
std::mutex
이(가) CPU 사용률을 낮게 유지한 전체 CPU 사용량의 증가분을 포함하는 확대된 시간 블록을 표시합니다.
스레드 잠금 항목에서 설명하는 단계를 사용하여 코어 실행을 중지하는 코드 줄을 좁힐 수 있습니다. 스레드가 새 작업을 기다리는 중일 때 CPU 코어가 유휴 상태인 경우 다른 스레드의 스레드 정보를 조정하여 이 핵심에서 시간을 예약하거나 이 핵심에서 처리하기 위한 추가 작업을 준비합니다.
예상대로 실행되지 않는 스레드에 포커스를 맞추는 단계
프로세스, 스레드별 CPU 사용량(precise) 사용률 창을 사용하여 스레드별 문제를 해결할 수 있습니다.
그림 8에 표시된 같이 CPU 사용 현황(%) 열에서 예상보다 낮은 CPU 사용량 비율로 실행되는 스레드를 검토합니다. 예를 들어 대부분의 경우 실행할 것으로 예상되는 단일 코어에 한정되는 스레드가 있습니다. 백분율은 코어당이 아니라 전체 CPU의 100%를 기준으로 합니다.
그림 8. 제목에 있는 스레드의 CPU 사용량 백분율을 볼 수 있는 프로세스별 활용률, 스레드 창 표시
조사할 섹션이 표시될 때까지 확대합니다. 이는 데이터 테이블을 정렬할 수 있는 데이터의 양을 제한합니다.
데이터 테이블에 있는 새 스레드 스택(프레임 태그) 항목을 확장하여 제목이 CPU를 제어하는 위치를 그림 9와 같이 표시합니다. CPU 사용량(%) 열은 전체 소요 시간의 백분율을 코어 당이 아니라 전체 CPU에 상대적인 100%로 표시합니다.
그림 9.
std::mutex
이(가)스레드 활용율을 낮게 유지했던 스레드 사용률이 상승하는 지점 표시
스레드 잠금 항목에서 설명하는 단계를 사용하여 실행을 중지하는 코드 줄을 좁힐 수 있습니다.