nVidia GRID K2 vDGA with VMware Horizon View using PCoIP

Today I’d like to share a very interesting lab session with you all – the result will be a dedicated virtual machine with one of nVidia GRID K2’s GPU Cores enabled and accessed via Horizon View’s PCoIP protocol, where we’ll take a small look at its performance and parameters.

Prerequisites

You will not need much for this very basic VMware Horizon environment – a VM where either vDGA or vSGA is present and Horizon View Agent & Horizon View Agent Direct-Connection Plugin installed to allow you to connect to it via PCoIP.  You will be connecting to this VM via the VMware Horizon Client.

You can request a trial for VMware Horizon (with View) on My VMware – this will enable you to download and evaluate the whole suite for 60 days.

Preparing your Virtual Desktop

After you have the VM provisioned and enabled a PCI passthrough for the GRID, you will also need to reserve all its memory, and if the VM’s RAM is above 4GB, you will need to add one additional line to the Advanced Configuration (or straight out edit the .vmx in vi if you’re into this kind of stuff)

pcie.Hole = 2048

This will make sure that the memory is allocated correctly within the virtual guest.

When you boot up your VM, you will see that there is a new unknown device in the Device Manager. This means that the GRID is ready for GPU driver installation – but here comes a small catch – you will not be able to use the remote console meaningfully when the driver is installed. This is because a second GPU is added and therefore a second virtual monitor, and the Web Client’s Remote Console or the VMRC plugin will fail to translate your mouse  movements correctly.

If you try to modify the monitor layout, disable one of the GPUs, or uninstall it, you will have a bad time. Believe me, I tried for several hours and ended up with VM that was uncontrollable via Remote Console and no matter what I did through RDP to fix it, I couldn’t get back to the VM so I had to rebuild it. Even selecting the 3d-accelerated display as the default was fruitless because then the screen just freezes – disabling the VMware’s SVGA adapter resulted in losing access to the nVidia adapter. This is because The standard VMware VGA driver is needed for the VM to display any graphical output. This is why I have decided to use Horizon View for purposes of testing the GPU.

Before any testing is initiated, I’d recommend fully patching your guest OS along with installing Microsoft Visual C++ Libraries and updating DirectX via dxwebsetup. Also do read up on application requirements – I ended up in failed SPECviewperf runs because it eats ~25GB of hard drive space and I didn’t have that much. Then I read the documentation which stated about 50GB of hard drive space is required for the installation itself – that coming from a 2,3 GB install was quite unbelievable.

After everything has been set up, just install the Horizon Client on your desktop PC and you can begin exploring the 3D capabilities. After launching just select New Server, and you will be asked for the server name and subsequently credentials.

connect-horizonclient

Inside vDGA with Horizon Client

The first thing I like is the dynamic screen size – it can span on the whole two monitors seamlessly, or shrink into a window of a size you see fit where the guest OS always adapts to your window size. After we’ve become comfortable with the remote desktop let’s analyze the nVIDIA GRID GPU with GPU-Z.

gpuz-grid2

One thing you have to keep in mind though is the remote protocol (in this case, PCoIP) overhead – in this case it was consuming about 20% of the virtual CPUs in a 1920×1200 resolution. This will definitely grow with the use of multiple monitors. This does not apply to vSGA though – the overhead stays pretty much below 5% during the session.

pcoip-overhead

Let’s try running Unigine Heaven, a benchmarking / GPU load tool used widely on the desktop computers – but since it can use OpenGL and its full potential as well as DirectX9 or DirectX 11, I found it to be a feasible tool for this purpose. Plus it’s really nice to look at.

benchSetttings_1080p

Now, a screenshot of a running benchmark, GPU-Z statistics and task manager that was running in the background. Excuse the quality, I am connecting to the remote desktop via WAN.

1080p-bench2

1080p-benching

CPU Load during the benchmark run – 2 vCPUs is enough to handle the benchmark.

 I have to say I was pretty impressed with how powerful this GPU is – it was running the above preset in Unigine Heaven at around 20-30 FPS on average. I keep analyzing the GPU and will have a review prepared for you in a future post.

Thanks for your interest and see you next time!

Share your thoughts