GPU 사용량GPU Usage

Visual Studio 성능 및 진단 허브의 GPU 사용량 도구를 사용하여 Direct3D 앱의 개략적인 하드웨어 사용률을 더 잘 이해할 수 있습니다.Use the GPU Usage tool in the Visual Studio Performance and Diagnostics Hub to better understand the high-level hardware utilization of your Direct3D app. 앱의 성능이 CPU에 의존하는지 아니면 GPU에 더 의존하는지를 확인하고 플랫폼 하드웨어를 더 효율적으로 사용할 수 있는 방법에 대해 통찰력을 얻을 수 있습니다.You can use it to determine whether the performance of your app is CPU-bound or GPU-bound and gain insight into how you can use the platform's hardware more effectively. GPU 사용량 도구는 Direct3D 12, Direct3D 11 및 Direct3D 10을 사용하는 앱을 지원하며 Direct2D 또는 OpenGL과 같은 다른 그래픽 API는 지원하지 않습니다.GPU Usage supports apps that use Direct3D 12, Direct3D 11, and Direct3D 10; it doesn't support other graphics APIs such as Direct2D or OpenGL.

다음은 GPU 사용량 보고서 창입니다.This is the GPU Usage Report window:

CPU 및 GPU 타임라인을 사용한 GPU 사용량 보고서The GPU Usage report, with CPU and GPU timelines

요구 사항Requirements

그래픽 진단 요구 사항 외에 GPU 사용량 도구를 사용하기 위한 요구 사항은 다음과 같습니다.The following are requirements for using the GPU Usage tool that are in addition to Graphics Diagnostics requirements.

  • 필수적인 타이밍 계측을 지원하는 GPU 및 드라이버A GPU and driver that support the necessary timing instrumentation.

    참고

    지원되는 하드웨어 및 드라이버에 대한 자세한 내용은 이 문서 끝에 있는 하드웨어 및 드라이버 지원을 참조하세요.For more information on supported hardware and drivers, see Hardware and driver support at the end of this document.

    그래픽 진단 요구 사항에 대한 자세한 내용은 시작을 참조하세요.For more information about Graphics Diagnostics requirements, see Getting Started.

GPU 사용량 도구 사용Using the GPU Usage tool

GPU 사용량 도구에서 응용 프로그램을 실행하면 Visual Studio는 앱의 렌더링 성능과 GPU 사용률에 대한 개략적인 정보를 그래프로 표현하는 진단 세션을 실시간으로 만듭니다.When you run your app under the GPU Usage tool, Visual Studio creates a diagnostic session that graphs high-level information about your app's rendering performance and GPU utilization in real-time.

GPU 사용량 도구를 시작하려면To start the GPU Usage tool:

  1. 주 메뉴에서 디버그를 선택한 다음 성능 및 진단을 선택합니다(키보드: Alt+F2 누름).In the main menu, choose Debug, then Performance and Diagnostics (Keyboard: Press Alt+F2).

  2. 성능 및 진단 허브에서 GPU 사용량 옆에 있는 상자를 선택합니다.In the Performance and Diagnostics hub, check the box next to GPU Usage. 선택적으로 사용하려는 다른 도구 옆에 있는 확인란을 선택합니다.Optionally, check the boxes next to other tools you're interested in. 다수의 성능 및 진단 도구를 동시에 실행하여 앱 성능을 보다 자세히 확인할 수 있습니다.You can run several Performance and Diagnostics tools concurrently to get a fuller picture of your app's performance.

    사용하려는 진단 도구를 선택합니다.Choose the diagnostic tools you want to use.

    참고

    일부 성능 및 진단 도구는 동시에 사용할 수 없습니다.Not all Performance and Diagnostics tools can be used at the same time.

  3. 성능 및 진단 허브의 맨 아래에 있는 파란색 시작 단추를 선택하면 선택한 도구 아래에서 앱이 실행됩니다.Choose the blue Start button at the bottom of the Performance and Diagnostics hub to run your app under the tools you selected.

    실시간으로 표시되는 개략적인 정보에는 프레임 타이밍, 프레임 속도 및 GPU 사용량이 포함됩니다.The high-level information that's displayed in real-time includes frame timing, frame rate, and GPU utilization. 이러한 각 정보 항목은 개별적으로 그래프로 표현되지만, 시간 단위를 사용하여 이 정보를 서로 연결할 수도 있습니다.Each of these pieces of information are graphed independently, but use a common time-scale so that you can easily relate between them.

    프레임 시간(ms)초당 프레임(FPS) 그래프에는 초당 60개 및 30개 프레임의 성능 목표를 나타내는 두 개의 빨간색 가로줄이 있습니다.The Frame time (ms) and Frames per second (FPS) graphs contain two red, horizontal lines that represent performance targets of 60 and 30 frames per second. 프레임 시간 그래프에서 그래프가 선 아래에 있으면 앱이 성능 목표를 초과하는 것이고 그래프가 선 위에 있으면 목표에 미달하는 것입니다.In the Frame time graph, your app is exceeding the performance target when the graph is below the line and missing it when the graph is above the line. 초당 프레임 그래프에서는 그 반대입니다. 즉, 그래프가 선 위에 있으면 앱이 성능 목표를 초과하는 것이고 그래프가 선 아래에 있으면 목표에 미달하는 것입니다.For the Frames per second graph it's the opposite - your app is exceeding the performance target when the graph is above the line and missing it when the graph is below the line. 기본적으로, 이러한 그래프는 앱 성능에 대한 개략적인 아이디어를 얻고 예를 들어 프레임 속도가 갑자기 떨어지거나 GPU 사용량이 급격히 증가하는 경우처럼 조사가 필요한 성능 저하를 식별하는 데 사용됩니다.Primarily, these graphs are used to get a high-level idea of your app's performance and to identify slow-downs that you might want to investigate -- for example, a sudden drop in frame rate or a spike in GPU Utilization.

    GPU 사용량 도구에서 앱이 실행 중일 때 진단 세션은 GPU에서 실행된 그래픽 이벤트에 대한 자세한 정보를 수집합니다.While your app runs under the GPU Usage tool, the diagnostics session also collects detailed information about graphics events that were executed on the GPU. 이 정보는 앱이 하드웨어를 사용하는 방식에 대한 보다 세부적인 보고서를 생성하는 데 사용됩니다.This information is used to generate a more granular report of how your app utilizes the hardware. 수집된 정보에서 이 보고서를 생성하는 데는 다소 시간이 걸리기 때문에, 진단 세션에서 정보 수집이 완료된 후에만 보고서를 생성할 수 있습니다.Because this report takes some time to generate from the collected information, it's only available after the diagnostics session is done collecting information.

    성능 또는 사용률 문제를 보다 면밀하게 검토하려면 보고서가 생성될 수 있도록 성능 정보 수집을 중지합니다.When you want to look at a performance or utilization issue more closely, stop collecting performance information so that the report can be generated.

GPU 사용량 보고서를 생성하고 보려면To generate and view the GPU Usage Report:

  1. 진단 세션 창 아랫부분에서 컬렉션 중지 링크를 선택하거나 왼쪽 위 모서리에 있는 중지를 누릅니다.In the bottom portion of the diagnostics session window, choose the Stop Collection link or press Stop in the upper left-hand corner.

    GPU 및 CPU 타이밍 정보를 수집합니다.Collect GPU and CPU timing information.

  2. 보고서의 윗부분에서 조사하려는 문제가 표시된 그래프의 섹션을 선택합니다.In the top portion of the report, select a section from one of the graphs that shows the issue you want to investigate. 최대 3초 길이까지 선택할 수 있습니다. 이보다 긴 섹션은 끝에서 앞쪽으로 잘립니다.Your selection can be up to 3 seconds long; longer sections are truncated towards the beginning.

    이후 컬렉션, 세부 사항을 볼 범위 선택Post-collection, select a range to view details

  3. 보고서 아래 부분에 있는 해당 범위의 GPU 사용량을 자세히 보려면 여기를 클릭... 메시지에서 자세히 보기 링크를 선택하여 선택 항목의 자세한 타임라인을 봅니다.In the bottom portion of the report, choose the view details link in the ...click here to view details of GPU usage for that range message to view a detailed timeline of your selection.

    범위가 선택된 이후 컬렉션Post-collection, with range selected

    이렇게 하면 보고서가 포함된 새 탭 문서가 열립니다.This opens a new tabbed document that contains the report. GPU 사용량 보고서를 사용하면 CPU에서 그래픽 이벤트가 시작된 시간, 이벤트가 GPU에 도착한 시간, 이를 GPU가 실행하는 데 걸린 시간 등을 확인할 수 있습니다.The GPU Usage report helps you to see when a graphics event is started on the CPU, when it reaches the GPU, and how long it takes the GPU to execute it. 이러한 정보는 병목 현상 및 코드 병렬 처리를 개선해야 할 부분 등을 식별하는 데 도움이 됩니다.This information can help you to identify bottlenecks and opportunities for increased parallelism in your code.

GPUView 또는 Windows Performance Analyzer로 내보내기Export to GPUView or Windows Performance Analyzer

Visual Studio 2017부터 이 데이터는 진단 세션의 오른쪽 아래에 있는 GpuView에서 열기 또는 WPA에서 열기 링크를 클릭하여 GPUViewWindows Performance Analyzer로 열 수 있습니다.Starting with Visual Studio 2017, this data can be opened with GPUView and Windows Performance Analyzer by clicking the Open in GpuView or Open in WPA links located at the lower right of the diagnostic session.

열기...

GPU 사용량 보고서 사용Using the GPU Usage report

GPU 사용량 보고서의 윗부분에는 CPU 처리 작업, GPU 렌더링 작업 및 GPU 복사 작업에 대한 타임라인이 표시됩니다.The top portion of the GPU Usage report displays timelines for the CPU processing activity, GPU rendering activity and GPU copy activity. 이러한 타임라인은 디스플레이의 vsync를 나타내는 연회색 세로 막대로 나뉩니다. 이 막대의 빈도는 GPU 사용량 데이터를 수집하는 디스플레이 중 하나(디스플레이 드롭다운을 사용하여 선택)의 새로 고침 빈도와 일치합니다.These timelines are divided by light-grey, vertical bars that represent the display's vsync; the frequency of the bars matches the refresh rate of one of the displays (selected by using the Display drop-down) that GPU Usage data was collected from. 디스플레이의 새로 고침 빈도가 앱의 성능 목표보다 높을 수 있으므로, vsync와 앱에서 달성할 프레임 속도가 1:1의 관계가 되지 않을 수 있습니다.Because the display might have a higher refresh rate than your app's performance target there might not be a 1-to-1 relationship between vsync and the frame-rate you want your app to achieve. 성능 목표를 충족하려면 앱은 목표 프레임 속도로 모든 처리를 완료하고 렌더링을 수행하고 Present() 호출을 수행해야 합니다. 그러나 렌더링된 프레임은 Present() 이후 다음 vsync까지는 표시되지 않습니다.To meet its performance target an app must complete all processing, perform rendering, and make a Present() call at the targeted framerate, but the rendered frame will not be displayed until the next vsync after Present().

하단에 보고서의 기간 동안 발생한 그래픽 이벤트의 목록이 표시됩니다.The bottom portion displays a listing of the graphics events that occurred during the time period of the report.

다음은 GPU 사용량 보고서 창입니다.Here's the GPU Usage Report window:

CPU 및 GPU 타임라인을 사용한 GPU 사용량 보고서The GPU Usage report, with CPU and GPU timelines

보고서의 하단에서 이벤트 중 하나를 선택하면 관련 타임라인에서 해당 이벤트에 표식이 배치됩니다. 일반적으로 CPU 스레드에서 API 호출을 나타내는 이벤트가 하나 표시되고, GPU 타임라인 중 하나에 GPU가 작업을 완료한 때를 나타내는 다른 이벤트가 표시됩니다.Selecting one of the events in the bottom portion of the report places a marker at corresponding events in the relevant timelines, typically one event on a CPU thread that represents the API call and another event on one of the GPU timelines that represents when the GPU completed the task. 마찬가지로, 타임라인에서 이벤트 중 하나를 선택하면 보고서 하단에서 해당 이벤트가 강조 표시됩니다. 보고서 상단에 있는 타임라인을 축소하면 가장 많은 시간이 소요되는 이벤트만 표시됩니다.Likewise, selecting one of the events in a timeline highlights the corresponding event in the bottom portion of the report.When zoomed out of the timelines in the top portion of the report, only the most time-consuming events are visible. 기간이 더 짧은 이벤트를 보려면 Ctrl 키를 누른 채로 포인팅 장치의 휠을 움직이거나 상단 패널의 왼쪽 아래 모서리에 있는 크기 조정 컨트롤을 사용하여 타임라인을 확대합니다.To see events that have a shorter duration, zoom into the timelines by using Ctrl + wheel on your pointing device, or the scaling control in the lower left-hand corner of the top panel. 타임라인 패널의 콘텐츠를 끌어 기록된 이벤트를 이동할 수도 있습니다.You can also drag the timeline panel's contents to move through the recorded events.

원하는 내용을 쉽게 찾으려면 프로세스 이름, 스레드 ID, 이벤트 이름 등을 기준으로 GPU 사용량 보고서를 필터링할 수 있습니다. 또한 렌더링 명령을 그룹화하는 데 ID3DUserDefinedAnnotation 인터페이스를 사용하는 앱의 경우에는 어느 디스플레이의 새로 고침 빈도에 따라 vysnc 선이 결정되는지를 선택한 후 이벤트를 계층적으로 정렬할 수 있습니다.To help you find what you're looking for, you can filter the GPU Usage Report based on Process names, Thread IDs, and the event name; additionally, you can choose which display's refresh rate determines the vysnc lines and you can sort events hierarchically if your app uses the ID3DUserDefinedAnnotation interface to group rendering commands.

자세한 내용은 다음과 같습니다.Here are more details:

필터 컨트롤Filter control 설명Description
ProcessProcess 관심 있는 프로세스의 이름입니다.The name of the process you are interested in. 진단 세션 도중에 GPU를 사용한 모든 프로세스가 이 드롭다운에 포함됩니다.All processes that used the GPU during the diagnostics session are included in this dropdown. 이 드롭다운에 있는 프로세스와 연결된 색은 아래 타임라인에 나오는 스레드 작업의 색입니다.The color associated with the process in this drop down is the color of the thread's activity in the timelines below.
스레드Thread 관심 있는 스레드 ID입니다.The thread ID that you are interested in. 다중 스레드 앱에서는 이 컨트롤을 사용하여 관심 있는 프로세스에 속한 특정 스레드를 격리시킬 수 있습니다.In a multi-threaded app, this can help you isolate particular threads that belong to the process that you're interested in. 선택한 스레드와 관련 있는 이벤트는 각 타임라인에서 강조 표시됩니다.Events associated with the selected thread are highlighted in each timeline.
표시Display 새로 고침 빈도가 표시되는 디스플레이의 수입니다. 참고: 일부 드라이버는 여러 개의 실제 디스플레이를 하나의 대형 가상 디스플레이로 표현되도록 구성할 수 있습니다.The number of the display whose refresh rate is displayed Note: Some drivers can be configured to present multiple physical displays as a single, large virtual display. 컴퓨터에 여러 디스플레이가 연결되었더라도 목록에 디스플레이가 하나만 표시될 수 있습니다.You might see just one display listed, even if the machine has multiple displays attached.
필터Filter 관심 있는 키워드입니다.Keywords that you are interested in. 보고서 하단에 나오는 이벤트에는 키워드 전체 또는 일부와 일치하는 이벤트만 포함됩니다.Events in the bottom portion of the report will only include those that match a keyword in whole or in part. 여러 키워드를 세미콜론(;)으로 구분하여 지정할 수 있습니다.You can specify multiple keywords by separating them with a semicolon (;).
계층 정렬Hierarchy Sort 사용자 표식을 통해 정의된 이벤트 계층 구조를 유지하는지 아니면 무시하는지 나타내는 확인란입니다.A checkbox that indicates whether event hierarchies--defined through user markers--are preserved or ignored.

GPU 사용량 보고서 하단에 있는 이벤트 목록은 각 이벤트의 세부 정보를 표시합니다.The list of events in the bottom portion of the GPU Usage Report displays the details of each event.

Column 설명Description
이벤트 이름Event Name 그래픽 이벤트의 이름입니다.The name of the graphics event. 이벤트는 일반적으로 CPU 스레드 타임라인에 있는 하나의 이벤트와 GPU 타임라인에 있는 하나의 이벤트에 해당합니다.An event usually corresponds to one event in a CPU thread timeline and one event on a GPU timeline.

이벤트 이름은 GPU 사용량에서 이벤트의 이름을 확인할 수 없는 경우 이벤트 이름은 'unattributed'가 될 수 있습니다.Event names might be 'unattributed' if GPU Usage was unable to determine the name of an event. 자세한 내용은 이 표 아래의 참고 내용을 참조하세요.For more information, see the note below this table.
CPU 시작(ns)CPU Start (ns) Direct3D API 호출을 통해 이벤트가 CPU에서 시작된 시간입니다.The time that the event was initiated on the CPU by calling a Direct3D API. 이 시간은 앱이 시작된 시간을 기준으로 나노초 단위로 측정됩니다.The time Is measured in nanoseconds, relative to when the app started.
GPU 시작(ns)GPU Start (ns) 이벤트가 GPU에서 시작된 시간입니다.The time that the event was initiated on the GPU. 이 시간은 앱이 시작된 시간을 기준으로 나노초 단위로 측정됩니다.The time is measured in nanoseconds, relative to when the app started.
GPU 지속 시간(ns)GPU Duration (ns) GPU에서 이벤트가 완료되는 데 걸린 시간입니다(나노초 단위).The time that the event took to complete on the GPU, in nanoseconds.
프로세스 이름Process Name 이벤트가 발생한 앱의 이름입니다.The name of the app from which the event came.
스레드 IDThread ID 이벤트가 발생한 스레드 ID입니다.The thread ID from which the event came.

중요

GPU 또는 드라이버가 필수 계측 기능을 지원하지 않는 경우 모든 이벤트는 ‘unattributed’로 표시됩니다.If your GPU or driver don't support the necessary instrumentation features, all events will appear as 'unattributed'. 이 문제가 발생하는 경우 GPU 드라이버를 업데이트한 후 다시 시도해 봅니다.Make sure to update your GPU driver and try again if you experience this problem. 자세한 내용은 아래에서 하드웨어 및 드라이버 지원을 참조하세요.For more information, see Hardware and driver support below.

GPU 사용량 설정GPU Usage settings

앱이 시작되자마자 정보 수집을 시작하는 대신 프로파일링 정보 수집을 연기하도록 GPU 사용량 도구를 구성할 수 있습니다.You can configure the GPU Usage tool to postpone collection of profiling information, rather than starting to collect information as soon as the app starts. 프로파일링 정보의 크기가 상당히 클 수 있으므로, 이 옵션은 앱 성능 저하가 나중에 나타날 것임을 알고 있는 경우에 유용합니다.Because the size of the profiling information can be significant, this is useful when you know that slowdowns in your app's performance won't appear until later.

앱 시작 이후 프로파일링을 연기하려면To postpone profiling from the start of the app:

  1. 주 메뉴에서 디버그를 선택한 다음 성능 및 진단을 선택합니다(키보드: Alt+F2 누름).In the main menu, choose Debug, then Performance and Diagnostics (Keyboard: Press Alt+F2).

  2. 성능 및 진단 허브에서 GPU 사용량 옆에 있는 설정 링크를 선택합니다.In the Performance and Diagnostics hub, follow the settings link next to GPU Usage.

  3. 일반 속성 페이지의 GPU 프로파일링 구성 아래에서 앱 시작 시 프로파일링 시작 확인란의 선택을 취소하여 프로파일링을 연기합니다.Under GPU Profiling Configuration, on the General property page, clear the Begin profiling at app start checkbox to postpone profiling.

    GPU 사용량 수집이 시작되면 구성Configure when GPU Usage collection starts

중요

현재 Direct3D 12 앱에 대해서는 프로파일링 연기가 지원되지 않습니다.Postponing profiling is not currently supported for Direct3D 12 apps.

이 설정을 사용하여 프로파일링 정보 컬렉션을 연기하는 경우 GPU 사용량 도구에서 앱을 실행할 때 GPU 사용량 도구 창 하단에서 추가 링크를 사용할 수 있게 됩니다.When you postpone the collection of profiling information by using this setting, an additional link becomes available in the bottom portion of the GPU Usage tool window when you run your app under the GPU Usage tool. 프로파일링 정보 수집을 시작하려면 자세한 GPU 사용량 데이터를 추가로 수집하기 시작합니다. 메시지에서 시작 링크를 선택합니다.To start collecting profiling information, choose the Start link in the Start collecting additional detailed GPU Usage Data message.

하드웨어 및 드라이버 지원Hardware and driver support

지원되는 GPU 하드웨어 및 드라이버는 다음과 같습니다.The following GPU hardware and drivers are supported:

VendorVendor GPU 설명GPU Description 필요한 드라이버 버전Driver Version Required
Intel®Intel® 4세대 Intel® Core Processors(‘Haswell’)4th Generation Intel® Core Processors ('Haswell')

- Intel® HD Graphics(GT1)- Intel® HD Graphics (GT1)
- Intel® HD Graphics 4200(GT2)- Intel® HD Graphics 4200 (GT2)
- Intel® HD Graphics 4400(GT2)- Intel® HD Graphics 4400 (GT2)
- Intel® HD Graphics 4600(GT2)- Intel® HD Graphics 4600 (GT2)
- Intel® HD Graphics P4600(GT2)- Intel® HD Graphics P4600 (GT2)
- Intel® HD Graphics P4700(GT2)- Intel® HD Graphics P4700 (GT2)
- Intel® HD Graphics 5000(GT3)- Intel® HD Graphics 5000 (GT3)
- Intel® Iris™ Graphics 5100(GT3)- Intel® Iris™ Graphics 5100 (GT3)
- Intel® Iris™ Pro Graphics 5200(GT3e)- Intel® Iris™ Pro Graphics 5200 (GT3e)
-- (최신 드라이버 사용)-- (use latest drivers)
AMD®AMD® AMD Radeon™ HD 7000 시리즈 이후 대부분(AMD Radeon™ HD 7350-7670 제외)Most since AMD Radeon™ HD 7000-series (excludes AMD Radeon™ HD 7350-7670)

AMD Radeon™ GPU, AMD FirePro™ GPU 및 AMD FirePro GPU 액셀러레이터 - Graphics Core Next(GCN) 아키텍처 포함AMD Radeon™ GPU, AMD FirePro™ GPUs, and AMD FirePro GPU accelerators featuring Graphics Core Next (GCN) architecture.

AMD® E 시리즈 및 AMD A 시리즈 Accelerated Processing Unit(APU) - Graphics Core Next(GCN) 아키텍처(‘Kaveri’, ‘Kabini’, ‘Temash’, ‘Beema’, ‘Mullins’) 포함AMD® E-Series and AMD A-series Accelerated Processing Units (APUs) featuring Graphics Core Next (GCN) architecture ('Kaveri', 'Kabini', 'Temash' , 'Beema', 'Mullins')
14.7 RC3 이상14.7 RC3 or higher
NVIDIA®NVIDIA® NVIDIA® GeForce® 400 시리즈 이후 대부분Most since NVIDIA® GeForce® 400-series.

NVIDIA® GeForce® GPU, NVIDIA Quadro® GPU 및 NVIDIA® Tesla™ GPU 액셀러레이터 - Fermi™, Kepler™ 또는 Maxwell™ 아키텍처 포함NVIDIA® GeForce® GPUs, NVIDIA Quadro® GPUs and NVIDIA® Tesla™ GPU accelerators featuring Fermi™, Kepler™, or Maxwell™ architecture.
343.37 이상343.37 or higher

NVIDIA® SLI™ 및 AMD Crossfire™ 등의 다중 GPU 구성은 현재 지원되지 않습니다.Multi-GPU configurations such as NVIDIA® SLI™ and AMD Crossfire™ are not supported at this time. NVIDIA® Optimus™ 및 AMD Enduro™ 등의 하이브리드 그래픽 설정이 지원됩니다.Hybrid graphics setup, such as NVIDIA® Optimus™ and AMD Enduro™ are supported.

참고 항목See also