How to evaluate GPU utilization(usage) on Windows?

I found that the GPU usage in Windows task manager not that accurate(may be too low):
when I run some 3D games on my computer, the total usage of GPU in task manager showed about 1%-10%, that seems not the right one. while the “3D” engine usage is about 1%-10%, but the Graphics_1 engine is about 100%.
I also found that the GPU total usage is bind with “3D” engine as I oberved, the total usage of the GPU always shows the same as the usage of “3D” engine.

my question is:
1、Who/what decides which GPU engine to use and how?(3D engine\Graphics_1 engine\CUDE engine\Decode engine\Encode engine, etc.)
2、How to measure the GPU is busy or not(the usage), which data shoul I use for sure?
3、Is the total usage in Windows task manage not right?

OS: Windows 10 64-bit (10.0, Build 19045) (19041.vb_release.191206-1406)
DirectX Version: DirectX 12
GPU: NVIDIA GeForce GTX 1660
Driver Version: 31.0.15.2756

Hi there!

The way that GPU load gets scheduled and how it gets measured and reported to Windows Task-Manager is something that goes beyond answering in a forum post. It depends on too many factors like driver, overall running processes, the actual app profile that is using the GPU, how high the load from the Windows GUI is (which is also GPU accelerated), background processes accessing the GPU, etc. the list goes on and on.

So it is expected that the Task-Manager summary might not be 100% accurate all the time.

A better tool to see the actual GPU status is nvidia-smi.exe which you can run from a simple command shell. It is automatically in your PATH after driver installation. Make sure to look at the help output using nvidia-smi.exe -h.

It has a lot of options to give you just the information you need.

And if you want to take it deeper than this, check out our NSight developer tools where you can dig into the smallest detail of GPU usage by your application during development.

I hope that helps answer your question.

1 Like

Thanks a lot! nvidia-smi.exe seems always displaying the righte GPU usage as I tried, this is cool.

I would like to let you know that the GPU usage in Windows Task-Manager is not right when the games are using the GPU engines besides “3D” engine, this confusing me a lot, I`d rather think that this is a bug in Windows system.

but who/what decides which GPU engine to use?

That depends completely on the use-case, it is not “decided” but rather “requested”. If a game renders a scene, it will use 3D. If there is a HUD or Menu overlay, it might use 2D which uses a different engine path. If it displays in-game video, the NVDEC video decoder will kick in. If there is an NPC controlled by a Deep Learning driven language model, it might use CUDA as well.

1 Like

Is there any way to incorporate the GPU usage from Nvidia-smi.exe into a monitoring app (ie. AquaSuite)?

Hi there @anonymous.doc, welcome to the NVIDIA developer forums.

If the question is whether there is an API to run the same queries that you would through calls to nvidia-smi, then the answer is no.

There are many third-party and even open source tools that read many different GPU parameters for visualization. But they use different access to this information which is a subset of what nvidia-smi can read and write.