Graphics apps are built to think they “own” the underlying physical hardware.
The goal of all virtualization technologies is to let them continue to think that, while intelligently sharing the physical resources among multiple apps or separate users. The closer it can get to the physical behavior, more complex the apps that can be supported.
Tim Mackey has posted discussions on the alternative 3D technologies, and how to make informed decisions about selecting the one for your needs. Rachel Berry has also written numerous posts wondering how to evaluate XenServer vGPU for complex 3D apps with respect to others such as VMware vSGA. Here, we take that discussion forward and dig a little deeper into the architectural differences between vSGA and vGPU.
Under the hood of GPU Sharing Technologies
First, let’s look at how the VMware shared 3D technology works, followed by the Citrix architecture.
VMware vSphere vSGA
VMware virtual shared graphics acceleration or vSGA provides the ability for multiple virtual machines to leverage physical GPUs installed locally in the ESXi hosts to accelerate 3D graphics. However, unlike HDX 3D Pro, the VM’s do not have direct access to the physical GPU hardware. The VMware SVGA 3D graphics driver is installed on Windows Desktop OS; SVGA is a proprietary VMware driver that provides support for DirectX 9.0c and OpenGL 2.1. Graphics commands from user session are intercepted by this driver and sent to session 0 (hypervisor) which controls the GPU. Unlike HDX 3D Pro, the NVIDIA driver is installed in the vSphere hypervisor, instead of the guest OS.
This method may be called API Intercept or software-based GPU virtualization. There are many reasons why API Intercept technique may not perform well with complex 3D models:
- Processing overhead and latency when the graphics commands have to be sent from the user session to Session 0 which controls the GPU
- Limited video memory available for 3D rendering. vSGA supports a maximum of 512MB video memory per VM. To reach the scalability numbers they claim, vRAM is usually set between 64-128MB. This is way too low for nearly every tier-1 3D application.
- Professional 3D applications perform poorly or even fail to run when they cannot find OpenGL 4.3 and DirectX 11 libraries. The older drivers in VMware vSGA support only up to DirectX 9 and OpenGL 2.1
Designed to address knowledge worker use-case and some light 2D and 3D workloads, vSGA provides a cost-effective, scalable solution as long as there are no demanding applications or complex models to render. Citrix XenDesktop and VMware View can both leverage vSphere vSGA for virtual desktops. More details on the deployment are available in these guides for VMware View and Citrix XenDesktop
Citrix HDX 3D Pro
Shared GPU for Desktops using Citrix HDX 3D Pro is true hardware-accelerated graphics for every virtual machine (VM), equivalent to the graphics stack available on physical workstations. Unlike the custom VMware SVGA 3D driver, Citrix HDX 3D Pro uses the native GPU driver installed directly in the guest OS. With NVIDIA GRID cards, this ensures 100% application compatibility and any app certified to work with NVIDIA cards is fully supported. HDX 3D Pro supports OpenGL 4.3 and DirectX 11 apps on both desktop and server platforms. Application vendors are actively working with NVIDIA and Citrix to certify this stack for security and support compliance. This compliance is hard, if not impossible, with vSGA and even then there will be delay while proprietary drivers catch up with latest features on graphics cards.
As the table above shows, each virtual machine directly accesses a part of the physical card, called the “vGPU”. The vGPU assignment also provides direct frame buffer access to video memory on the GPU. This direct access minimizes lag, providing a highly responsive user experience, even when rendering large and complex 3D models. Compare this to VMware vSGA where only half the video memory (already too low to begin with) is reserved on the hardware GPU. The balance is reserved via the ESXi host RAM, away from the graphics processor. The shared video memory with vGPU can be easily scaled depending on workload expectations: as high as 2GB per VM for the most complex apps, or as low as 256MB for maximum scalability. Simply select the right “vGPU Type” and presto! the allocation is made automatically.
What makes Citrix the best technology for the most demanding 3D graphics use-cases?
Developed jointly with hardware experts such as NVIDIA, HDX 3D Pro from Citrix is an advanced technology for true hardware-accelerated GPU sharing for VDI. This is very different from the approach taken by other vendors, where proprietary drivers act as schedulers and renderers, to accomplish the sharing of GPU resources in software.
To summarize the Citrix advantages, they come from the following design goals for complex, high-end graphics delivery:
1) True hardware virtualization with NVIDIA vGPU. Graphics applications have direct access to the GPU, reducing system latency and improving performance with complex 3D workloads.
2) Native graphics hardware stack. Drivers support for the latest OpenGL and DirectX libraries for maximum application compatibility and performance, thanks to end-to-end graphics stack by NVIDIA (hardware, Windows driver, hypervisor manager)
3) Leverage FlexCast services. Balance high performance and optimum scalability with choice of delivering just the apps, or full desktop using the FlexCast delivery model in XenDesktop and XenApp, supporting HDX optimizations for low-bandwidth and broad range of client devices.
Virtualization has many benefits, and it must pass the User Adoption test to be successful. Design engineers tend to be very sensitive to responsive and faithful renderings of their display. When evaluating any technology on behalf of such users, one must learn to look beyond the obvious. The 3D technology discussions on these pages will guide your quest to virtualize 3D environments in the best possible way.
For more information, be sure to check out the technical guides and videos on the HDX 3D Launch Page