VMware Horizon View 5.2 and
Hardware Accelerated 3D Graphics
Best Practices
View 5.2 and PCoIP dynamically adapt to the available CPU and bandwidth resources to present the optimal user
experience. Even when tens of VMs are sharing a single physical GPU, vSphere ensures that the resource is fairly
shared between the different VMs. As a result, very little out-of-the-box configuration is required deliver peak
performance:
•
Configure VMs to use VMXNET3 NICs.
•
Consider disabling PCoIP’s build-to-lossless mode.
•
Set the MaxAppFrameRate (see Optimizing Resource Sharing).
The next sections describe additional considerations for maximizing performance and efficiency of a 3D desktop
workload.
Maximizing VM Consolidation
The administrator console provides the ability to configure the amount of graphics or video RAM (termed VRAM)
allocated to each VM. The default per-VM VRAM allocation is 128MB. While increasing the per-VM VRAM
allocation might deliver higher performance, it will limit the number of VMs that can simultaneously share a GPU;
the GPU’s memory is sub-divided between the VMs. Accordingly, if the GPU has 4GB of memory, and the VMs are
configured to use the default 128MB of VRAM, it is possible for up to 32 VMs to simultaneously share the GPU.
Similarly, if the VMs are configured to use 512MB each, the per-GPU consolidation ratio may be reduced to 8. To
further increase the number of VMs supported per server, vSphere 5.1 can support multiple GPUs per system.
For Aero and basic 3D applications, use of the default VRAM allocation is sufficient and is recommended to
ensure maximum consolidation ratios. Higher allocations can be reserved for VMs that will run more intensive 3D
operations, where additional GPU resources will deliver improved performance.
For pools containing more VMs than can be simultaneously supported by the GPU, additional VMs will not boot
once the GPU resources have been exhausted. In this situation, rather than explicitly setting the pool to use
hardware 3D in the administrator console, it is advantageous to use the "automatic" option; this enables any
additional VMs that might be needed, over and above the GPU’s capabilities, to be supported using vSphere's
software renderer solution.
In contrast, for situations where two distinct groups of users share a server—one group requiring hardware 3D
acceleration and one not—it is best to configure these two groups of VMs as separate pools. Use the
administrator console to explicitly configure the hardware group to use hardware accelerated 3D and the other
group to use either software 3D or even no 3D, as appropriate. Changes to a pool’s 3D strategy are handling
automatically by View and vSphere and do not require manual configuration of the desktop VMs.
Optimizing Resource Sharing
In contrast to a physical workstation that has sole use of its GPU, in the virtualized environment GPUs become a
shared resource. As a result, it is important to ensure that each VM does not use the GPU resource in a wasteful
manner. For instance, in many situations it often does not make sense for a 3D application to render hundreds of
frames per second if View is configured to remote at a lower frame-rate (30fps is the default setting). For these
situations, View provides a registry setting to limit the maximum application frame rate. This can either be
configured in the template VM or on a per-VM basis, and the value should typically be set to the maximum frame
rate that is being used by PCoIP. This configuration is achieved by using the following registry setting
(REG_DWORD):
HKLM\SOFTWARE\VMware, Inc.\VMware SVGA DevTap\MaxAppFrameRate
Setting this registry entry for a 3D workload has been found to significantly improve the performance and
consolidation ratios achievable.