Identify GPU-CPU Issues with Graphics Trace Analyzer
- Correlate GPU and CPU activity and identify whether your application is GPU or CPU bound
- Identify GPU and CPU application frame rate and how it depends on vertical synchronization
- Explore the performance of your application over time per selected GPU and CPU metrics
- Analyze API calls (draw calls, buffer locks, resource updates, presents)
- Explore application events specified by a user through debug API events and Instrumentation and Tracing Technology API (ITT API) markers
- Analyze GPU usage per DMA packet on a software queue
- Explore GPU usage and analyze a software queue for GPU engines at each moment of time
- Analyze synchronization in multi-context graphics applications (DirectX* 12, Vulkan*).
Capture and Open a Trace
- Launch Graphics Monitor.
- Click theOptionsbutton.
- In theTracetab, configure tracing options as needed.
- In the Graphics Monitor Launcher screen, specify an application for analysis.
- ChooseTracemode from the launch modes drop-down menu.
- Click theStartbutton to launch the application.
- Choose one of the following methods to capture the trace data to a file:
- System Analyzer HUDPressCtrl+Shift+T(default). When the capture is complete, the HUD displays a message with the file name or possible errors, if any.
- System Analyzer
- Return to the Graphics Monitor Launcher screen and click theConnect System Analyzerbutton next to your application. The button becomes available after you start the application.
- If needed, modify the list of metrics to monitor in the System Analyzer window.
- Click theCapture Tracebutton to capture a trace file. When the capture is complete, the System Analyzer displays a message with the file name or possible errors, if any.
- From the Graphics Monitor context menu, launch Graphics Trace Analyzer.
- In the Open Trace Capture window, select and open the captured trace file.
View Collected Data
- GPU queue: shows how GPU executes commands forming a frame buffer you see on the screen.
- Driver queue: shows how graphics driver schedules graphics commands for execution on the GPU.
- Graphics API calls: represent the activity of each thread (calls to the graphics API, synchronization function calls, events, tasks annotated by ITT API).
- CPU cores: show how threads from different processes including your profiled application are executed.
- Flip queue: reflects the relationship between the application present calls, present packages of GPU/CPU queues, and Vertical Synchronization (VSync) event of the monitor.
- CPU frames: show the range containing graphics commands between two successive frames buffer swap calls.
- CPU and GPU metrics: show CPU and GPU performance for the selected metrics and metric set. CPU and GPU metrics help you compare CPU and GPU utilization, and spot problematic areas.
- Parallel Execution(DirectX 11): shows how the driver parallelizes execution of submitted render events.
Identify Performance Issues
- GPU is busy the whole time and GPU queue has no visible gaps.
- Driver queue continuously accumulates command buffers waiting for the execution on the GPU. Driver queue size is long.
- Average command buffer execution time exceeds the desired limit based on the expected FPS rate.
- Use Graphics Trace Analyzer tracks with events generated by Debug API, ITT API markup, or Events Tracing for Windows (ETW).