How to check the number of vGPUs are running concurrently inside guest virtual machine?

I am using m60-2q profile so one m60 card can host 8 virtual machines. All virtual machines run Windows 10. I am using one of the VMs.
I want to know how many vGPUs are running concurrently inside my virtual machine. Also, it will be great if I can see each vGPU utilization inside one of the virtual machines.
I have tried nvidia-smi but it seems that it only show my vGPU info.


Each VM shares access to the same physical GPU as it’s FrameBuffer is allocated from. So in your case, 4 VMs will share access to the first physical GPU and the other 4 VMs will share access to the second physical GPU, as the M60 has 2 physical GPUs.

GPU access can be shared or time sliced between VMs. Framebuffer is a fixed allocation per VM.

For monitoring, you can use nvidia-smi run from an SSH session to the hypervisor, or if you’re using Citrix you can use Director or if you’re using VMware you can use vROPs to monitor GPU usage.


Are there ways to see how many vGPUs are running with current physical card inside VM?

I’ll save you the trouble of looking … There’s 1. You can only have 1 vGPU in a VM.

The term “vGPU” is a pretty poor description to be honest. We’re not virtualising the GPU, we’re time slicing a single physical GPU between multiple VMs with the use of a scheduler. So we can’t give you 2x time slices to the same GPU. The way to do that would be to either run less VMs on the GPU, or increase the FrameBuffer allocation so that there are less VMs sharing the physical GPU (either way the result is the same).

Your hypervisor will tell you how many VMs are sharing the same physical GPU, XenServer is the best for this. Which hypervisor are you using?

If you want multiple GPUs inside a VM, you need to use Passthrough which will massively reduce your density. You’ll also need software that can effectively make use of multiple GPUs. Just adding more GPUs to an operating system will do absolutely nothing other than waste resource.