Introduction

If you are interested in monitoring the current performance of your GPU running any arbitrary application of your choice then this is an article just for you.

Having a portable computer with an Optimus hardware setup, with one primary Intel GPU and one discrete NVIDIA GPU, I wanted to compare the Intel and the NVIDIA GPU monitoring tools.

Performance monitoring is different from benchmarking and from performance measurement.

  • In benchmarking a fixed scene or set of defined scenes is used to determine absolute performance values of the graphics card (including the driver subsystem),
  • In performance monitoring, operational parameters of the GPU are monitored (e.g. memory usage, temperature, GPU utilization, …)
  • In performance measurement you want to analyze primarily the performance of an application (of course depending on the graphics subsystem).

GPUs usually come with their own performance monitoring tools packaged together with the driver, with more or less detailed information made available and varying degree of usefulness:

  • NVIDIA: nvidia-smi
  • Intel: intel_gpu_top
  • AMD: aticonfig

Performance Monitoring with NVIDIA GPU

A monitoring and management command line utility, nvidia-smi, is included with the NVIDIA Linux graphics driver. After installing the driver, you can run this utility by running the following command in a terminal window (requires user):

nvidia-smi

You may view help information with the –help command option:

nvidia-smi --help

or using the man page:

man nvidia-smi

You can nicely run your application in full screen and overlay the monitoring console (terminal) with the following command:

watch -n 0.5 nvidia-smi

And here’s the NVIDIA GPU monitor in action:

Terminal with NVIDIA GPU monitoring console

Besides basic GPU and driver information, notable parameters show here include: GPU utilization (GPU-Util), Memory-Usage, Temperature (Temp), and the individual processes using the GPU.

Performance Monitoring with Intel GPU

Intel GPU tools require root permissions to run.

The GPU tools provided with the driver offer more or less useful metrics as compared to NVIDIA tools.

With intel_gpu_top you can monitor your GPU performance in an overlay terminal window (requires root):

intel_gpu_top

And here’s the simple Intel GPU monitor in action:

Terminal with Intel GPU monitoring console

The current GPU utilization (render busy) is the most useful of the displayed parameters. The render space might give us a hint about the memory utilization.
Interpreting the other parameters requires in-depth knowledge about the hardware functioning of GPUs, so I will rather not discuss them here.

As such, this tool may be considered more of an analysis tool, rather than a pure monitoring tool.

Another interesting tool is:

intel_gpu_frequency

which will display the current, minimum, and maximum GPU tact frequencies:

cur: 1050 MHz
min: 350 MHz
RP1: 350 MHz
max: 1050 MHz

Performance Monitoring with AMD GPU

The one recommended monitoring tool is aticonfig, which I will not go into detail of its functioning in this article, as I do not have a system installation with AMD at hand.

Summary

We have discussed the difference between GPU benchmarking, monitoring, and measurement.

Two different monitoring tools for different GPUs, one for NVIDIA, and one for Intel, have been presented with their different monitoring approaches.

Recommendation

With the GPU utilization being the only comparable parameter shown for NVIDIA and Intel, it would be desirable that Intel would present a tool that could show more meaningful parameters.

References:

Advertisements