다음을 통해 공유


GPU 사용량

비고

VISUAL Studio 그래픽 진단은 ARM64 Visual Studio에서 지원되지 않습니다.

성능 프로파일러의 GPU 사용량 도구를 사용하여 Direct3D 앱의 상위 수준 하드웨어 사용량을 더 잘 이해할 수 있습니다. 앱의 성능이 CPU 바인딩인지 GPU 바인딩인지 확인하고 플랫폼의 하드웨어를 보다 효과적으로 사용하는 방법에 대한 인사이트를 얻는 데 도움이 됩니다. GPU 사용량은 Direct3D 12, Direct3D 11 및 Direct3D 10을 사용하는 앱을 지원합니다. Direct2D 또는 OpenGL과 같은 다른 그래픽 API는 지원하지 않습니다.

GPU 사용 보고서 창의 모양은 다음과 같습니다.

GPU 사용량 보고서의 스크린샷: CPU 및 GPU 타임라인 포함

요구 사항

GPU 사용량 도구를 사용하려면 그래픽 진단 요구 사항 외에도 다음이 필요합니다.

  • 필요한 타이밍 계측을 지원하는 GPU 및 드라이버입니다.

    비고

    지원되는 하드웨어 및 드라이버에 대한 자세한 내용은 이 문서의 끝에 있는 하드웨어 및 드라이버 지원을 참조하세요.

그래픽 진단 요구 사항에 대한 자세한 내용은 시작하기를 참조하세요.

GPU 사용량 도구 사용

GPU 사용량 도구에서 앱을 실행하면 Visual Studio에서 진단 세션을 만듭니다. 이 세션은 앱의 렌더링 성능 및 GPU 사용량에 대한 대략적인 정보를 실시간으로 그래프로 표시합니다.

GPU 사용량 도구를 시작하려면 다음을 수행합니다.

  1. 주 메뉴에서 디버그>성능 및 진단을 선택하거나 키보드에서 Alt+F2를 누릅니다.

  2. 성능 및 진단 허브에서 GPU 사용량 옆의 확인란을 선택합니다. 필요에 따라 관심 있는 다른 도구 옆에 있는 확인란을 선택합니다. 여러 성능 및 진단 도구를 동시에 실행하여 앱 성능에 대한 전체적인 그림을 얻을 수 있습니다.

    GPU 사용량이 선택된 GPU 사용량이 선택된 성능 프로파일러의 스크린샷

    비고

    모든 성능 및 진단 도구를 동시에 사용할 수 있는 것은 아닙니다.

  3. 성능 및 진단 허브의 맨 아래에 있는 [시작]을 선택하여 선택한 도구에서 앱을 실행합니다.

실시간으로 표시되는 상위 수준 정보에는 프레임 타이밍, 프레임 속도 및 GPU 사용량이 포함됩니다. 이러한 각 정보는 독립적으로 그래프로 표시되지만 모두 공통 시간 규모를 사용하여 관계를 쉽게 이해할 수 있습니다.

프레임 시간(ms)FPS(초당 프레임 수) 그래프에는 각각 초당 60프레임과 30프레임의 성능 목표를 표시하는 두 개의 빨간색 가로 선이 있습니다. 프레임 시간 그래프에서 그래프가 선 아래에 있을 때 앱이 성능 대상을 초과하고 그래프가 선 위에 있을 때 대상을 놓칩니다. 초당 프레임 그래프의 경우 반대입니다. 그래프가 선 위에 있을 때 앱이 성능 대상을 초과하고 그래프가 선 아래에 있을 때 대상이 누락됩니다. 이러한 그래프는 주로 앱의 성능에 대한 높은 수준의 아이디어를 얻고 조사할 수 있는 속도 저하를 식별하기 위해 사용합니다. 예를 들어 프레임 속도가 급격히 감소하거나 GPU 사용률이 급증하면 추가 조사가 보장될 수 있습니다.

앱이 GPU 사용량 도구에서 실행되는 동안 진단 세션은 GPU에서 실행된 그래픽 이벤트에 대한 자세한 정보도 수집합니다. 이 정보를 사용하여 앱이 하드웨어를 활용하는 방법에 대한 보다 세부적인 보고서를 생성합니다. 이 보고서는 수집된 정보에서 생성하는 데 다소 시간이 걸리므로 진단 세션이 정보 수집을 완료한 후에만 사용할 수 있습니다.

성능 또는 사용률 문제를 좀 더 자세히 살펴보려면 보고서를 생성할 수 있도록 성능 정보 수집을 중지합니다.

GPU 사용 현황 보고서를 생성하고 보려면 다음을 수행합니다.

  1. 진단 세션 창의 아래쪽 부분에서 컬렉션 중지 링크를 선택하거나 왼쪽 위 모서리에서 중지 를 선택합니다.

    초당 프레임, GPU 사용률, 중지 단추 및 컬렉션 중지 링크를 보여 주는 GPU 사용량 도구의 진단 세션 창 스크린샷

  2. 보고서의 위쪽 부분에서 조사하려는 문제를 보여 주는 그래프 중 하나에서 섹션을 선택합니다. 선택 영역의 길이는 최대 3초입니다. 긴 섹션은 시작 부분으로 잘립니다.

    진단 세션 타임라인의 일부가 선택된 GPU 사용량 도구의 진단 세션 창 스크린샷

  3. 선택 영역의 자세한 타임라인을 보려면 보고서의 아래쪽 부분에 있는 ... 해당 범위 메시지에 대한 GPU 사용량에 대한 세부 정보를 보려면 여기를 클릭하고세부 정보 보기를 선택합니다.

    범위가 선택된 진단 세션 창

이 옵션을 선택하면 보고서가 포함된 새 탭 문서가 열립니다. GPU 사용량 보고서는 CPU에서 그래픽 이벤트가 시작되는 시기, GPU에 도달하는 시간 및 GPU를 실행하는 데 걸리는 시간을 확인하는 데 도움이 됩니다. 이 정보는 코드에서 병렬 처리가 증가할 수 있는 병목 상태 및 기회를 식별하는 데 도움이 될 수 있습니다.

GPUView 또는 Windows 성능 분석기로 내보내기

Visual Studio 2017부터 GPUViewWindows Performance Analyzer를 사용하여 이 데이터를 열 수 있습니다. 진단 세션의 오른쪽 아래 모서리 에 있는 GpuView 에서 열기 또는 WPA에서 열기 링크를 선택하기만 하면 됩니다.

링크가 강조 표시된 진단 세션 창의 스크린샷

GPU 사용량 보고서 사용

GPU 사용량 보고서의 위쪽 부분에는 CPU 처리 작업, GPU 렌더링 작업 및 GPU 복사 작업에 대한 타임라인이 표시됩니다. 이러한 타임라인은 디스플레이의 세로 동기화(vsync)를 나타내는 연한 회색 세로 막대로 나뉩니다. 막대의 빈도는 GPU 사용량 현황 데이터가 수집된 디스플레이 중 하나의 새로 고침 속도( 표시 드롭다운 목록을 사용하여 선택됨)와 일치합니다.

디스플레이의 새로 고침 속도가 앱의 성능 목표보다 높을 수 있으므로 vsync와 앱이 달성하려는 프레임 속도 간에 1 대 1 관계가 없을 수 있습니다. 성능 목표를 충족하려면 앱이 모든 처리를 완료하고 Present() , 렌더링을 수행하고, 대상 프레임 속도에서 호출해야 합니다. 하지만 렌더링된 프레임은 다음 vsync 이후 Present()까지 표시되지 않습니다.

GPU 사용량 보고서의 아래쪽 부분에는 보고서 기간 동안 발생한 그래픽 이벤트가 나열됩니다. 이벤트를 선택하면 관련 타임라인의 해당 이벤트에 표식이 표시됩니다. 일반적으로 CPU 스레드의 한 이벤트는 API 호출을 표시하고 GPU 타임라인 중 하나의 다른 이벤트는 GPU가 작업을 완료한 시점을 표시합니다. 마찬가지로 타임라인에서 이벤트를 선택하면 보고서는 보고서의 아래쪽 부분에 있는 해당 그래픽 이벤트를 강조 표시합니다.

보고서의 위쪽 부분에 있는 타임라인을 축소하면 시간이 가장 많이 걸리는 이벤트만 표시됩니다. 기간이 짧은 이벤트를 보려면 포인팅 디바이스에서 Ctrl+휠을 사용하거나 위쪽 패널의 왼쪽 아래 모서리에 있는 크기 조정 컨트롤을 사용하여 타임라인을 확대합니다. 타임라인 패널의 콘텐츠를 끌어 기록된 이벤트를 이동할 수도 있습니다.

원하는 항목을 찾으려면 프로세스 이름, 스레드 ID 및 이벤트 이름을 기반으로 GPU 사용량 보고서를 필터링합니다. 또한 vysnc 줄을 결정하는 디스플레이의 새로 고침 속도를 선택할 수 있습니다. 앱이 ID3DUserDefinedAnnotation 인터페이스를 사용하여 렌더링 명령을 그룹화할 경우 이벤트를 계층적으로 정렬할 수 있습니다.

자세한 내용은 다음과 같습니다.

필터 컨트롤 설명
프로세스 관심 있는 프로세스의 이름입니다. 진단 세션 중에 GPU를 사용한 모든 프로세스가 이 드롭다운 목록에 포함됩니다. 프로세스와 연결된 색은 타임라인에서 스레드 작업의 색입니다.
스레드 관심 있는 스레드 ID입니다. 다중 스레드 앱에서 이 정보는 관심 있는 프로세스에 속하는 특정 스레드를 격리하는 데 도움이 될 수 있습니다. 선택한 스레드와 연결된 이벤트는 각 타임라인에서 강조 표시됩니다.
표시 새로 고침 빈도가 표시되는 디스플레이의 수입니다. 일부 드라이버는 여러 물리적 디스플레이를 하나의 대형 가상 디스플레이로 표시하도록 구성할 수 있습니다. 컴퓨터에 여러 디스플레이가 연결되어 있더라도 하나의 디스플레이만 나열될 수 있습니다.
필터 관심 있는 키워드입니다. 보고서의 아래쪽 부분에 있는 이벤트에는 키워드와 일치하는 이벤트만 포함됩니다( 전적으로 또는 부분적으로). 여러 키워드를 세미콜론(;))으로 구분하여 지정할 수 있습니다.
계층 정렬 사용자 표식을 통해 정의된 이벤트 계층이 유지되거나 무시되는지 여부를 나타내는 확인란입니다.

GPU 사용량 보고서의 아래쪽 부분에 있는 이벤트 목록은 각 이벤트의 세부 정보를 보여 줍니다.

칼럼 설명
이벤트 이름 그래픽 이벤트의 이름입니다. 이벤트는 일반적으로 CPU 스레드 타임라인의 이벤트 및 GPU 타임라인 이벤트에 해당합니다. GPU 사용량이 이벤트의 이름을 확인할 수 없는 경우 이벤트 이름은 배포되지 않을 수 있습니다. 자세한 내용은 이 표 다음의 참고 사항을 참조하세요.
CPU 시작(ns) Direct3D API를 호출하여 CPU에서 이벤트가 시작된 시간입니다. 시간은 앱이 시작된 시점을 기준으로 나노초 단위로 측정됩니다.
GPU 시작 (ns) GPU에서 이벤트가 시작된 시간입니다. 시간은 앱이 시작된 시간을 기준으로 나노초 단위로 측정됩니다.
GPU 시간 (ns) GPU에서 이벤트가 완료되는 데 걸린 시간(나노초)입니다.
프로세스 이름 이벤트가 발생한 앱의 이름입니다.
스레드 ID 이벤트가 발생한 스레드 ID입니다.

중요합니다

GPU 또는 드라이버가 필요한 계측 기능을 지원하지 않는 경우 모든 이벤트는 영향을 받지 않는 것으로 표시됩니다. 이 문제가 발생하는 경우 GPU 드라이버를 업데이트하고 다시 시도합니다. 자세한 내용은 이 문서의 끝에 있는 하드웨어 및 드라이버 지원을 참조하세요.

GPU 사용 설정

앱이 시작되는 즉시 정보 수집을 시작하는 대신 프로파일링 정보 수집을 연기하도록 GPU 사용량 도구를 구성할 수 있습니다. 프로파일링 정보의 크기가 중요할 수 있으므로 이 작업은 나중에 앱 성능 저하가 나타나지 않는다는 것을 알고 있을 때 유용합니다.

앱 시작부터 프로파일링을 연기하려면 다음을 수행합니다.

  1. 주 메뉴에서 디버그>성능 및 진단을 선택하거나 키보드에서 Alt+F2를 누릅니다.

  2. 성능 및 진단 허브의 GPU 사용량 옆에 있는 설정 링크를 선택합니다.

  3. GPU 프로파일링 구성 아래의 일반 속성 페이지에서 앱 시작 시 프로파일링 시작 확인란의 선택을 취소하여 프로파일링을 연기합니다.

    컬렉션 옵션 gfx_diag_gpu_usage_config 보여 주는 개체 속성 페이지의 스크린샷

중요합니다

현재 Direct3D 12 앱에 대한 프로파일링을 연기할 수 없습니다.

GPU 사용량 도구에서 앱을 실행하면 GPU 사용량 도구 창의 아래쪽 부분에서 추가 링크를 사용할 수 있게 됩니다. 프로파일링 정보 수집을 시작하려면 추가 자세한 GPU 사용량 현황 데이터 메시지 수집 시작에서 시작 링크를 선택합니다.

하드웨어 및 드라이버 지원

지원되는 GPU 하드웨어 및 드라이버는 다음과 같습니다.

공급업체 GPU 설명 드라이버 버전 필요
인텔® 4세대 인텔® 코어 프로세서('Haswell')

- Intel® HD 그래픽(GT1)
- Intel® HD Graphics 4200(GT2)
- Intel® HD Graphics 4400(GT2)
- Intel® HD Graphics 4600(GT2)
- Intel® HD Graphics P4600(GT2)
- Intel® HD Graphics P4700(GT2)
- Intel® HD Graphics 5000(GT3)
- Intel® 아이리스™ 그래픽 5100(GT3)
- Intel® Iris™ Pro Graphics 5200(GT3e)
(최신 드라이버 사용)
AMD® AMD Radeon™ HD 7000 시리즈 이후 대부분(AMD Radeon™ HD 7350-7670 제외)

GCN(Graphics Core Next) 아키텍처를 갖춘 AMD Radeon™ GPU, AMD FirePro™ GPU 및 AMD FirePro GPU 가속기

GCN(Graphics Core Next) 아키텍처('Kaveri', 'Kabini', 'Temash', 'Beema', 'Mullins')가 포함된 AMD® E 시리즈 및 AMD A 시리즈 APU(가속 처리 장치)
14.7 RC3 이상
NVIDIA® NVIDIA® GeForce® 400 시리즈 이후 대부분

Fermi™, Kepler™ 또는 Maxwell™ 아키텍처를 갖춘 NVIDIA® GeForce® GPU, NVIDIA Quadro® GPU 및 NVIDIA® Tesla™ GPU 가속기
343.37 이상

NVIDIA® SLI™ 및 AMD 크로스파이어™와 같은 다중 GPU 구성은 현재 지원되지 않습니다. NVIDIA® Optimus™ 및 AMD Enduro™와 같은 하이브리드 그래픽 설정이 지원됩니다.