The GPU Pane
Graphical Processing Unit (GPU) Usage is a useful predictor of user experience problems, particularly in games. If software is making excessive demands on graphical processing hardware, this can directly lead to noticeable problems like unstable frame rates, micro-stutters and high power consumption. One way to reduce these problems might be to reduce the GPU’s workload, for example by downgrading certain art assets in the game.
Conversely, if visual problems exist despite GPU Usage being consistently low, then this indicates an optimisation problem or bug – likely one that cannot (or should not) be fixed by downgrading art assets, but which may instead stem from the way the user interface is laid out, for example, or the way tasks are being apportioned across different computational resources (such as different CPU threads).
Unlike game developers, app developers may not have much direct control over GPU usage (which is often abstracted and taken care of by the OS). Nevertheless, testers and QA engineers in the app world may still find value in knowing the healthy threshold for GPU Usage of their product, in order to spot outliers and thereby predict problems with the quality of experience (such as lack of smoothness during scrolling).
The GPU Info Box
This box presents a quick session-wide summary of GPU usage, including the two most important top-level metrics:
Average GPU Usage – This is probably the most critical metric for predicting problems, since a high average usage means that the GPU has consistently had to work hard across the duration of a session. Many well-optimised casual games, such as Super Mario Run and Farm Heroes Super Saga show average GPU usage of below 30 percent on high-end devices. Only a minority of game sessions (less than one third) in the GameBench crowdsourced database show more than 60 percent average GPU usage, and less than a tenth of crowdsourced sessions show more than 80 percent average GPU usage.
Peak GPU Usage – Exaggerated peaks and troughs are to be expected in any session. This is because workloads change significantly over the course of the user journey and also because GPU Usage is unnormalised – such that a peak in usage may cause GPU clock speed to rise, thereby causing a sudden dip in usage. However, if you observe prolonged bouts of heavy GPU usage (e.g. above 80 percent) combined with peaks of 100 percent, then this indicates that you may well be hitting the ceiling of what the GPU can muster.
GPU Vendor – This reveals the maker of the GPU. Different makers reveal GPU statistics in slightly different ways. For example, Qualcomm exposes GPU behaviour in a different way to ARM, and Imagination GPU are entirely different again. GPU comparisons are therefore most accurate when comparing different software loads on the same hardware, rather than the same loads on different devices with different GPUs (although the latter is still possible, just with reduced reliability).
GPU Renderer – This is the model name of the GPU. On Android, this may be useful for finding out the maximum clock speed of the GPU (see “The GPU Clock Speed Chart” section below.)
CSV Export – This allows you to export GPU stats for the session as a .csv file.
The GPU Markers Box
This works the same way as the markers boxes in other panes. If you use the Markers tab to mark out and label areas of interest within a session, this box will reveal Average GPU Usage specifically for those areas.
The GPU Usage Chart
Viewing GPU Usage over time, while correlating with screenshots in the Screenshot box, will help you to identify which parts of the user journey pushed the GPU the hardest.
Note that Imagination GPUs distinguish between two types of GPU usage: Vertex Load and Pixel Load, and both are shown will be shown on the chart (although only Vertex Load will be used to calculate average and peak GPU usage).
The GPU Clock Speed Chart (Android only)
It’s useful to know the clock speed of the GPU at any moment during the session, as this helps to establish a rough idea of true, normalised GPU usage (i.e., usage as a percentage of total GPU capability at maximum clock speed). Unfortunately, this isn’t possible on iOS devices as Apple chooses not to expose clock speeds. However, many Android devices do expose GPU clock speed, and on such devices, GameBench collects and reports this speed once every second.
In the screenshot below, for example, we are seeing Angry Birds 2 playing on an HTC Desire 816, which contains a Qualcomm Adreno 305 GPU. A quick check on Google reveals that this GPU has a maximum clock speed of 450MHz, and the Clock Speed chart shows that the GPU ran at this top speed for most of the session. At the same time, we can see that Average Usage was high (nearly 60 percent) and Peak Usage was at 100 percent – so we can be pretty sure that Angry Birds 2 is totally maxing out the GPU on the HTC Desire 816. We can also be pretty sure that this explains why the game can’t maintain 60 frames per second on this device, instead averaging just 38fps.
Technical notes and trouble-shooting
GPU Usage can generally be assumed to represent the foreground app
GPU Usage values represent system-wide GPU utilisation. However, since the GPU is normally only used by apps running in the foreground, values reported can generally be attributed to the foreground app.
Don’t pay too much attention to momentary jumps in clock speed
Because GPU Clock Speed is collected only once per second, you may occasionally see readings that make little sense – such as readings of “zero.” It’s therefore best to ignore momentary jumps in clock speed, and to read the chart more broadly.
List of supported GPUs
From our observations, GPUs from the following companies are supported:
- Qualcomm (Adreno)
- Imagination Technologies (PowerVR)
- ARM (Mali), but generally only higher-end Samsung devices
- NVIDIA (Tegra), but with support for only Tegra 4 and above.
Please contact us if you need more information with the device details if GPU Information is not being recorded.
Imagination GPUs show Pixel Load and Vertex Load
iOS devices and Android devices containing an Imagination Tech GPU expose the following metrics on the GPU Usage chart:
Total Vertex Load: Load in percent of the vertex processing hardware including vertex processing in the ALUs, work in the Tile Accelerator and related stall time.
Total Pixel Load: Load in percent of the pixel processing hardware including texturing, raster operation and fragment shader processing.
For simplicity, we generally use Vertex Load when calculating Average and Peak GPU Usage.