As you probably know, View 5 (in conjunction with vSphere 5) introduced has a software-based GPU function that gives users basic DirectX and OpenGL capability without the use of a physical GPU (like e.g. Citrix’s HDX3D GPU-passthrough requires). Typical target use cases include Aero and low-end 3D animations, not “high-end” 3D engineering application.
One of the questions I’ve been regularely asked is “what amount of overhead does this create?
As we have no physical GPU in this scenario to execute the graphics related work (3D rendering etc.), the (general purpose) system CPU will have to perform this task. As the CPU is the most likely bottleneck in the majority of VDI deployments, enabling 3D should have a direct impact on user density – but how much?
So I wanted to qualify and qauntify the impact of enabling 3D as part of our reference architecture testing. Using LoginVSI we investigated the maximum user density (VSImax) when:
- Configuring 3D capability for all desktops in a View 5 pool without enabling an Aero theme (this configuration would give user the ability to run e.g. Google Earth but have no Aero animations configured)
- Configuring 3D capability AND enable an Aero theme (with animated effects) for all users.
Both results will be compared to the base line (PCoIP connections to the same pool without any 3D capability enabled)
As the steps to enable 3D capability are actually not well covered in the View documentation I’ll give a step-by-step log of what we did … in case you are less interested in the “how” – here are the high-level results:
- Enabling 3d capability for the pool and image causes essentially zero overhead. This means that you can enable 3D capabilities for a pool even if you are not planning to use this capability in the future without impact on user density. That will allow users to use 3D-like applications like e.g. Google Earth if needed without having to reconfigure the pool (these 3D applications will of course create additional load if used).
- Enabling Aero capabilities should be done with care. Only enable users that really require this level of user experience as the impact on overall user density is significant.
As enabling Aero is done on a user level this can be done easily with the needed level of granularity.
But we’ll also keep a close eye on Citrix which is currently arguably the market leader in the high-end space with HDX3D Pro capabilities. The recent NVIDIA announcements around the “Kepler” GPU with virtualization capabilities are very promising as this approach will overcome the crippling 1:1 (1 vm per physical GPU) relationship with traditional GPU passthrough.
If you want to understand how to enable 3D/Aero on a View 5 pool simply read on …
Pool capabilities without 3D
We have an existing View 5 pool with 80 virtual desktops. The LoginVSI benchmark measured that we can support up to 74 multimedia users (VSImax) on our server (dual socket, 12 cores) when connecting with PCoIP.
Let’s test first what happens if we try to run a 3D app in a non-3D enabled vm …
- We connect with the View client (PCoIP) to our existing View pool (dedicated pool, linked clones, non-3D enabled)
- We connect to the Internet and try to install Google Earth – it fails with:
- Applying any of the above suggested actions will not resolve the issue
- Additionally when we try to configure Aero in the vm it fails (as expected).
The above confirms that you can neither run 3D (DirectX/OpenGL) applications nor enable Aero effects for users in a non-3D enabled pool.
Before you start, remember that you will need both, vSphere 5 AND View 5 in order to configure 3D. With virtual hardware version 8 the VMware tools install the 3D capable graphics adapter as the new default adapter, so ensure that you have the tools updated. For this article we assume that you have already installed and configured View 5.
Preparing the Master Image for 3D
First step for enabling 3D is to prepare the master image (for the linked clones). The View user documentation is a bit loose here and seems to omit that you need to prepare the master image before configuring the pool settings.
Note: In order to prepare the image for e.g. Aero use you will have to manually perform the following operations on the master image before creating the pool, perform the configuration changes and then take a snap shot for the linked clones.
As Windows was initially installed on a non-3D capable system, Aero is not enabled, nor has Windows established the User Experience Index (required), nor attempted to enable required Aero related services.
Therefore if you only enable 3D for the View pool (without the following image changes) the updates required to enable Aero would be missing and any changes you perform as user in the individual vms will be discarded on refresh (e.g. logoff). The result is that you would e.g. be able to run Google Earth (if installed) but not Aero.
- We took a clone of our existing master image to have an independent image stream (snapshots) for 3D
- Open a console to the cloned master vm (refered to as “3D Master” from now)
- (optional) Verify in Device manager that the 3D video adapter has been configured (min virtual HW v8 required and VMware tools installed)
- Enable 3D on the 3D Master virtual machine (> vm settings > tick box “enable 3D support”
- We tried again to install Google Earth again – this time it installed OK and worked as expected!
- As this point we took a snapshot “Google Earth without Aero enabled” which we will use later to test the supported number of users with LoginVSI.
We went on to prepare the image for Aero. As you might know from personal experience enabling Aero (after installing Win 7 on a non-3D capable system) feels slightly random but here are the steps that worked for us:
- Most VDI optimization procedures will disable services required for Aero functionality (including the official VMware script:
- We therefore enabled the “Desktop Window Manager Session Manager” service manually:
- The easiest way to enable Aero is to go to > Control Panel > Troubleshooting > Display Aero Desktop Effects > and follow the wizard ..
- This time (as 3D was enabled in the vm settings) the wizard will be able to fix most issues, even though it wrongly indicated that the Desktop Window Manager service was disabled the following actions were successful)
- Go to >System properties > advanced and apply “best appearance” – At this stage we still weren’t able to select advanced Aero options (e.g. Aero Peak)
- The important step is to run the “Windows Experience Index” for the system to confirm the appropriate 3D capability
- Confirm that the 3D capability was recognized
- Now we can enable advanced settings like Aero Peak appearance
- At this stage we created a second snapshot “Aero Enabled”
We have now for the same Master image two snap shots, one with Google Earth installed without Aero enabled and a second one for 3D enabled with Aero capabilities enabled. This allows us to test the overhead enabling general 3D capability as well as the delta of running Aero for all users.
Note: The Aero theme is a user setting, not a computer setting, so even with our second snap shot we will still have to enable an Aero theme for users of this image to get Aero working in the linked clone desktops.
Enable 3D Capability for the View 5 Pool (without enabling an Aero theme)
- Create a new pool or recompose the the existing pool edit the pool settings for your existing pool with the desired snap shot.
- Enable 3D as seen below, this settings will automatically enable 3D for all images of the pool ( so you don’t have to edit the individual virtual machine settings)
- For our test we selected the maximum amount of VRAM
- You will see a “reconfigure virtual machine” in vCenter – after the reconfiguration you can verify that the tick box “enable 3D support” has been set for all the virtual machines in the pool.
You are not done yet, in order for Aero to be effective ensure that you have enabled Aero for the user (e.g. using GPOs as shown in the below screenshot) The default for the user is a non-Aero theme when installing Win 7 on a non-3D capable vm. So while you might assume that at this point you have enabled Aero for all users of the pool a test will show you that users logging in will not have Aero capabilities.
Determining the overhead (impact on user density)
We simply used the respective snapshot to recompose our View pool and ran another series of LoginVSI tests.
The first test was done using the 3D enabled snapshot but Aero was not configured nor an Aero theme enabled for the users:
As you can see from above the test shows that there is basically no overhead when enabling the 3D capability on the pool, the user number stayed easily within the 5% bracket that we allow for VSImax fluctuation when running tests (we took the averages of 3 tests).
- We then recomposed the pool with the image that had 3D enabled, Aero configured and configured an Aero theme for all 80 users of the pool.
- After the first test run we reduced the number of vms to 60 in order to avoid a skewed result due to many idling virtual machines)
- The result is shown below:
The Aero enable test clearly shows the overhead created by enabling the additional Aero graphics workload. The impact on the CPU to emulate 3D functionality, causes the number of supported users to drop by over 35%.
OK, hopefully that gave you some insight into a) how to enable 3D and Aero and b) what type of overhead you should expect when doing so. The actual overhead will of course depend on the individual 3D workloads or animations you decide to run in your virtual desktops.