Note: I disabled comments on my blog in 2014 because of spammers. Please comment on this discussion on Twitter using the #VDIGPU hashtag.
Brian Madden recently published a blog arguing that GPU should not be considered optional for VDI. This post stemmed from a conversation that he had with Dane Young about a BriForum 2015 London session on his podcast.
Dane’s statement that kicked off this discussion was:
”I’m trying to convince people that GPUs should not be optional for VDI.”
The arguments that were laid out in Brian’s blog post were:
1. You don’t think of buying a desktop without a GPU
2. They’re not as expensive as people think
I think these are poor arguments for adopting a technology. GPUs are not required for general purpose VDI, and they should only be used when the use case calls for it. There are a couple of reasons why:
1. It doesn’t solve user experience issues: User experience is a big issue in VDI environments, and many of the complaints from users have to do with their experience. From what I have seen, a good majority of those issues have resulted from a) IT doing a poor job of setting expectations, b) storage issues, and/or c) network issues.
Installing GPUs in virtual environments will not resolve any of those issues, and the best practices are to turn off or disable graphics intensive options like Aero to reduce the bandwidth used on wide-area network links.
Some modern applications, like Microsoft Office and Internet Explorer, will offload some processing to the GPU. The software GPU in vSphere can easily handle these requirements with some additional CPU overhead. CPU overhead, however, is rarely the bottleneck in VDI environments, so you’re not taking a huge performance hit by not having a dedicated hardware GPU.
2. It has serious impacts on consolidation ratios and user densities: There are three ways to do hardware graphics acceleration for virtual machines running on vSphere with discrete GPUs.
(Note: These methods only apply to VMware vSphere. Hyper-V and XenServer have their own methods of sharing GPUs that may be similar to this.)
- Pass-Thru (vDGA): The physical GPU is passed directly through to the virtual machines on a 1 GPU:1 Virtual Desktop basis. Density is limited to the number of GPUs installed on the host. The VM cannot be moved to another host unless the GPU is removed. The only video cards currently supported for this method are high-end NVIDIA Quadro and GRID cards.
- Shared Virtual Graphics (vSGA): VMs share access to GPU resources through a driver that is installed at the host level, and the GPU is abstracted away from the VM. The software GPU driver is used, and the hypervisor-level driver acts as an interface to the physical GPU. Density depends on configuration…and math is involved (note: PDF link) due to the allocated video memory being split between the host’s and GPU’s RAM. vSGA is the only 3D graphics type that can be vMotioned to another host while the VM is running, even if that host does not have a physical GPU installed. This method supports NVIDIA GRID cards along with select QUADRO, AMD FirePro, and Intel HD graphics cards.
- vGPU: VMs share access to an NVIDIA GRID card. A manager application is installed that controls the profiles and schedules access to GPU resources. Profiles are assigned to virtual desktops that control resource allocation and number of virtual desktops that can utilize the card. A Shared PCI device is added to VMs that need to access the GPU, and VMs may not be live-migrated to a new host while running. VMs may not start up if there are no GPU resources available to use.
Figure 1: NVIDIA GRID Profiles and User Densities
There is a hard limit to the number of users that you can place on a host when you give every desktop access to a GPU, so it would require additional hosts to meet the needs of the VDI environment. That also means that hardware could be sitting idle and not used to its optimal capacity because the GPU becomes the bottleneck.
The alternative is to try and load up servers with a large number of GPUs, but there are limits to the number of GPUs that a server can hold. This is usually determined by the number of available PCIe x16 slots and available power, and the standard 2U rackmount server can usually only handle two cards. This means I would still need to take on additional expenses to give all users a virtual desktop with some GPU support.
Either way, you are taking on unnecessary additional costs.
There are few use cases that currently benefit from 3D acceleration. Those cases, such as CAD or medical imaging, often have other requirements that make high user consolidation ratios unlikely and are replacing expensive, high-end workstations.
Do I Need GPUs?
So do I need a GPU? The answer to that question, like any other design question, is “It Depends.”
It greatly depends on your use case, and the decision to deploy GPUs will be determined by the applications in your use case. Some of the applications where a GPU will be required are:
- CAD and BIM
- Medical Imaging
- 3D Modeling
- Computer Animation
- Graphic Design
You’ll notice that these are all higher-end applications where 3D graphics are a core requirement.
But what about Office, Internet Explorer, and other basic apps? Yes, more applications are offloading some things to the GPU, but these are often minor things to improve UI performance. They can also be disabled, and the user usually won’t notice any performance difference.
Even if they aren’t disabled, the software GPU can handle these elements. There would be some additional CPU overhead, but as I said above, VDI environments usually constrained by memory and have enough available CPU capacity to accommodate this.
But My Desktop Has a GPU…
So let’s wrap up by addressing the point that all business computers have GPUs and how that should be a justification for putting GPUs in the servers that host VDI environments.
It is true that all desktops and laptops come with some form of a GPU. But there is a very good reason for this. Business desktops and laptops are designed to be general purpose computers that can handle a wide-range of use cases and needs. The GPUs in these computers are usually integrated Intel graphics cards, and they lack the capabilities and horsepower of the professional grade NVIDIA and AMD products used in VDI environments.
Virtual desktops are not general purpose computers. They should be tailored to their use case and the applications that will be running in them. Most users only need a few core applications, and if they do not require that GPU, it should not be there.
It’s also worth noting that adding NVIDIA GRID cards to servers is a non-trivial task. Servers require special factory configurations to support GPUs that need to be certified by the graphics manufacturer. There are two reasons for this – GPUs often draw more than the 75W that a PCIe x16 slot can provide and are passively cooled, requiring additional fans. Aside from one vendor on Amazon, these cards can only be acquired from OEM vendors as part of the server build.
The argument that GPUs should be required for VDI will make much more sense when hypervisors have support for mid-range GPUs from multiple vendors. Until that happens, adding GPUs to your virtual desktops is a decision that needs to be made carefully, and it needs to fit your intended use cases. While there are many use cases where they are required or would add significant value, there are also many use cases where they would add unneeded constraints and costs to the environment.