다음을 통해 공유


타이밍 캡처를 사용하여 CPU 및 GPU 프로파일

타이밍 캡처는 CPU 및 GPU 프로파일링 데이터를 애플리케이션의 심층 분석을 위해 단일 캡처로 결합합니다. 이 데이터는 게임이 실행되는 동안 최소한의 오버헤드로 수집되므로 CPU 코어 간에 작업이 분산되는 방법, CPU에서 제출하고 GPU에서 실행하는 그래픽 작업 간의 대기 시간, 파일 IO 액세스 및 메모리 할당이 발생하는 경우 등의 작업을 볼 수 있습니다. 여기에는 PixEvents를 통한 애플리케이션 정의 이벤트, 표식 및 카운터도 포함 됩니다.

타이밍 캡처

연결 보기에서 원하는 프로세스를 시작하거나 연결합니다(관련 GPU 캡처 옵션의 선택을 취소).

필요에 따라 타이밍 캡처 옵션을 구성하고 준비가 되면 타이밍 캡처 시작 단추를 클릭하여 기록을 시작합니다. 타이밍 캡처 중지(또는 앱 종료)를 클릭하여 녹음/녹화를 종료합니다. 짧은 처리 기간이 지나면 캡처가 열립니다.

타이밍 캡처 옵션

속성 설명
캡처 모드 순차적: 캡처 시작과 중지 사이의 전체 이벤트를 기록합니다.
순환: 이벤트를 고정 크기 버퍼에 기록하여 마지막 n초의 데이터만 저장합니다. 자세한 내용은 이 순환 타이밍 캡처 블로그 게시물을 참조하세요.
CPU 샘플 샘플 프로파일링을 수행하여 CPU에서 시간을 소비하는 위치를 확인합니다. 샘플 속도는 구성할 수 있습니다.
컨텍스트 스위치의 호출 스택 스레드가 컨텍스트를 전환할 때 호출 스택을 수집합니다.
파일 액세스 파일 액세스를 추적합니다.
GPU 타이밍 GPU 작업이 시작 및 중지되는 시기에 대한 자세한 타이밍 정보를 수집합니다.
GPU 리소스 힙 및 리소스와 같은 D3D 개체에 대한 자세한 정보를 수집합니다. 또한 GPU 상주, 강등된 할당 및 할당 마이그레이션을 추적합니다.
VirtualAlloc/VirtualFree 이벤트 VirtualAlloc 및 VirtualFree 함수를 통해 이루어진 할당을 추적합니다.
HeapAlloc/HeapFree 이벤트 HeapAlloc 및 HeapFree 함수를 통해 이루어진 할당을 추적합니다.
사용자 지정 할당자 이벤트 PixEvents로 계측된 사용자 지정 메모리 할당자에 의한 할당을 추적합니다.
페이지 오류 이벤트 캡처가 실행 중일 때 발생하는 페이지 오류에 대한 데이터를 수집합니다. 페이지 오류는 타임라인 및 요소 세부 정보 보기에 표시됩니다.
타이틀이 아닌 프로세스에 대한 호출 스택 타이틀 프로세스(시작되거나 프로세스에 연결됨)가 아닌 프로세스에 대한 호출 스택을 캡처합니다.
커널 이미지 정보 커널 이진 파일에 대한 호출 스택을 표시해야 하는 정보를 수집합니다.
.wpix 파일 대신 .etl 파일 생성 생성된 .etl 파일은 나중에 파일 | 에서 .wpix 파일로 변환할 수 있습니다. 변환 메뉴입니다. 이 옵션은 버그를 PIX 팀에 보고하거나 ETW 데이터를 처리하기 위한 다른 도구가 있는 경우에 유용합니다.

프로그래밍 방식 캡처

WinPixEventRuntime을 사용하여 프로그래밍 방식으로 캡처를 수행할 수 있습니다. 자세한 내용은 프로그래밍 방식 캡처 블로그 게시물을 참조하세요.

CPU 프로파일링

캡처할 때 CPU 샘플 옵션을 사용하도록 설정하면 애플리케이션의 핫 경로에서 느린 함수를 정확히 찾아내고 스레드 대기 및 컨텍스트 스위치와 관련된 문제를 찾을 수 있습니다. 또한 적절한 캡처 옵션을 사용하도록 설정하여 다양한 종류의 할당을 추적할 수 있습니다.

이러한 기능을 자세히 다루는 몇 가지 블로그 게시물이 있습니다.

GPU 프로파일링

앱에 간헐적인 프레임 삭제가 발생하나요? 과도한 VRAM 사용량? 시스템 메모리와 VRAM 간의 예기치 않은 페이징 작업 PIX의 GPU 프로파일링 기능은 이러한 일반적이고 분석하기 어려운 상황을 파악하는 데 도움이 될 수 있습니다.

GPU 타이밍

캡처를 수행할 때 GPU 타이밍 옵션을 사용하도록 설정하여 GPU 작업에 대한 타이밍 데이터를 수집합니다. 타임라인 보기에서 각 GPU 큐에 대한 레인을 찾을 수 있습니다(레인 선택기에서 API 큐 고정 구성으로 해당 레인을 빠르게 고정할 수 있습니다). 이러한 레인에는 다음과 같은 여러 하위 레인이 포함됩니다.

  • PIX 이벤트(GPU): GPU 작업의 계층적 애플리케이션 정의 지역입니다. PixEvents를 참조 하세요.
  • GPU 실행: 실행은 API 수준의 작업 제출에 해당합니다. 예를 들어 ExecuteCommandLists를 통해
  • GPU 작업: GPU에서 발생하는 모든 작업 예: 그리기, 디스패치, 복사본
  • PIX 표식(GPU): 애플리케이션 정의 표식입니다. PixEvents를 참조 하세요.

레인에서 이벤트를 선택하면 해당 이벤트가 발생한 CPU의 위치를 보여 주는 화살표가 표시됩니다. 레인 옵션 메뉴(레인 이름 옆의 기어 아이콘)에는 다양한 시각화 옵션도 있습니다. 특히 평면 화 이벤트평면화 GPU 작업 옵션은 기본적으로 공간을 유지하기 위해 사용하도록 설정되어 있지만 특정 프레임으로 전환할 때 전체 PIX 이벤트 계층 구조 또는 GPU 작업 계층화를 볼 수 있습니다.

이 데이터는 표시할 항목 드롭다운에서 관련 범주를 선택하여 범위 세부 정보 보기를 통해 테이블 형식으로도 사용할 수 있습니다.

API 큐 레인에서 고정되지 않은 PIX GPU 이벤트 및 GPU 작업 보기, GPU 작업을 제출한 CPU 스레드를 보여 주는 화살표

프레젠테이션 및 표시 정보

Vsyncs는 별도의 모니터 레인에 표식으로 표시되며 다른 범주 내의 범위 세부 정보 보기에서 찾을 수 있습니다.

GPU 메모리 및 Direct3D 개체

Direct3D 개체에 대한 정보를 수집하기 위해 캡처를 수행할 때 GPU 리소스 옵션을 사용하도록 설정합니다. 전체 메모리 사용량을 그래프로 표시하려면 메트릭 보기에서 여러 카운터를 찾을 수 있습니다 . 다양한 예산 줄을 구성하여 메모리 사용 목표를 충족하는지 여부를 빠르게 파악할 수 있습니다. 관심 영역을 찾으면 시간 범위를 선택하고, 마우스 오른쪽 단추로 클릭하는 상황에 맞는 메뉴에서 범위로 확대/축소 타임라인 보기를 클릭하고, 선택한 시간 범위 드롭다운을 표시 범위 선택으로 설정하여 자세히 조사할 수 있습니다.

메트릭 보기에서 D3D API 개체 메모리 사용량 보기

선 스타일을 정사각형으로 설정하면 할당이 이루어지는 위치를 더 쉽게 확인할 수 있습니다.

범위 세부 정보 보기에서 힙, 리소스 및 파이프라인 상태 개체와 같은 Direct3D API 개체에 대한 다양한 정보를 볼 수 있습니다. 의심스러운 개체를 보다 쉽게 파악할 수 있도록 해당 정보는 할당 및 해제될 때별로 그룹화됩니다.

범위 세부 정보 보기에서 D3D API 개체 보기

상주

상주 관련 문제는 범위 세부 정보보기의 거주 작업, 강등된 할당할당 마이그레이션 범주 참조하세요. 이러한 마커와 이벤트는 레지던스 운영 레인에도 표시됩니다.

거주 작업에는 MakeResident 및 제거 작업(Direct3D 12 API를 통해 시작)뿐만 아니라 PageIn 및 PageOut 작업이 포함됩니다(자세한 내용은 상주 참조). DXGK(그래픽 커널)가 메모리 압력 또는 조각화로 인해 GPU의 VRAM에 리소스를 할당할 수 없는 경우 강등된 할당이 발생합니다. 이 경우 DXGK는 강등된 할당에 대한 할당 마이그레이션도 수행하려고 시도합니다. 이러한 마이그레이션은 GPU를 일시 중단해야 하기 때문에 비용이 많이 드는 작업입니다.

할당 마이그레이션 보기

GPU 사용률 및 프레젠테이션 카운터

캡처를 수행할 때 캡처 SysMon 카운터 옵션을 사용하도록 설정하여 GPU 성능과 관련된 다양한 카운터를 포함하는 시스템 모니터(즉, SysMon)에 있는 카운터를 수집합니다. 특히 다음과 같은 카운터가 있습니다.

  • GPU 사용률은 대상 프로세스와 모든 프로세스 모두에 대해 GPU 엔진으로 세분화됩니다.
  • 프레젠테이션 데이터(예: 초당 프레임(및 역, 밀리초, MsBetweenPresents) 및 MsUntilRenderComplete(현재 시작 시간과 GPU 작업 완료 사이의 시간).
  • 로컬 및 비 로컬 메모리 사용량, 거주 및 예산을 포함한 GPU 메모리 정보입니다.

메트릭 보기에서 초당 프레임 및 GPU 사용률 보기

설명을 보려면 시스템 모니터카운터 이름을 마우스로 가리킵니다.

이러한 카운터는 타이밍 캡처를 수행하는 동안 또는 시스템 모니터 보기에서 카운터 수집 시작 단추를 클릭하여 실시간으로 모니터링할 수도 있습니다. 그래프를 다시 정렬하고 카운터를 동적으로 추가하거나 제거할 수 있습니다. 카운터를 클릭하여 사용 가능한 모든 카운터를 봅니다.

시스템 모니터 그래프 및 카운터 보기

Win32 file-I/O

타이밍 캡처에서 Win32 파일 IO 성능을 분석하는 블로그 게시물을 참조하세요.

기타 분석 기능

  • 통계 비교는 비교되는 지점 집합에 대해 통계적으로 다른 기간이 있는 PIX 이벤트 계층 구조의 일부를 결정하는 데 도움이 됩니다. 자세한 내용은 블로그 게시물 타이밍 캡처 통계 비교 기능을 참조하세요.
  • 성능 예산을 설정하면 캡처의 문제가 있는 영역을 빠르게 식별할 수 있습니다. 자세한 내용은 타이밍 캡처 메트릭 보기에서 성능 예산을 사용하는 블로그 게시물을 참조하세요.
  • 타이밍 캡처의 블로그 게시물 중요 경로 분석도 참조하세요.