RemoteFX is already in use today, but you're probably not aware of it. With the advent of Windows 2012 and Windows 8, RDP has gotten a whole lot better due to the fact that RDP now uses even more RemoteFX technologies to make desktop sessions a lot smoother, faster and feature rich. You could even stream a 720p video without RDP skipping a beat - how cool is that?
Of course, RemoteFX does rely on the underlying hardware to make things a bit zippy, but when you're delivering content through a server which generally has a poor graphics card, then the performance isn't that great. Try it! RDP to a physical Windows 2012 Server, and try to play a 720p video. Performance is poor and choppy, despite you having a gigabit connection to the server. That's because the server isn't designed for multimedia, and the graphics card is a built-in bog standard one with virtually no hardware acceleration.
Of course, the solution to this is to add a GPU. So, take the same server, chuck in a reasonably decent graphics card, and play the same video - then voilà! Brilliant display. Lack of sound? You probably should have remembered to enable the Windows Audio service!
Thing is - most organizations are retiring their physical servers running Remote Desktop, and replacing them with bigger, beefier servers which are becoming part of Hyper-V clusters and they're now running Virtual Servers to provide the Remote Desktop solutions.
This article is intended to help these people be able to re-provide a great desktop experience by utilizing Hyper-V's RemoteFX feature.
You will need:
One or more Physical Servers which has a CPU that supports SLAT (EPT). Don't know if your server supports SLAT? Run Coreinfo
with the -v switch
Windows 2012 with Hyper-V installed. Need to know how to install Hyper-V on Windows 2012? No problem, there's an article
for that too!
One or more professional desktop graphics cards.
Remote Desktop License Server configured and ready to use.
A virtual machine on which you will be performing tests via RDP.
Performance Testing (Before)
Before we go ahead and do all the good stuff, let's take a look at the performance of a Windows 8 Workstation which has been given 1 GB RAM and a single vCPU (yes, I'm stingy) on top of a Windows 2012 Hyper-V Server.
Unfortunately, I was unsuccessful in trying to get a Performance Rating in Windows 8, I would just receive the following error while trying to "Rate this computer"
I surmise this error is as a result of the fact that it doesn't have a "good" graphics card, or it's a virtual machine.
Fortunately for us, 3rd party software is here to save the day! Using PassMark Performance Test 8
, we can do a thorough performance test.
I noticed that when I started the software, the FPS for the animation was around 11-20 fps - occasionally jumping up to around 30. This isn't so bad, considering it's RDP.
After running "all tests" I am able to get a baseline. The test completes although I get some really nasty errors regarding 3D performance - but this is hardly a surprise since there is virtually no 3D capabilities in a regular RDP session.
My 2D Graphics Mark is reasonably good with a result of 404.5 - bear in mind that this is via RDP, it's actually quite good.
My 3D Graphics Mark is so bad that it doesn't even give it an overall score - the only score it gives me is for DirectX 9 Simple, and I think you'll agree it's not very pleasing to the eye.
Installing My Hardware
I ordered the cheapest possible Enterprise level GPU to use for my server - an NVIDIA Quadro 2000 PCI-Express, 1GB GDDR5 card (shown below)
HP do their own edition of the card, and as I'm going to be putting it into an HP server, I thought I'd get that card. The installation was fairly easy - just had to slot it into a spare PCI Express slot which was on the riser. Here it is, in place and running nicely.
Like with all graphics cards, drivers need to be installed, so we go ahead and install the display drivers for the GPU on the host server itself. NVIDIA are really on the ball with their drivers, so we cheerfully download and install the latest WHQL drivers for our Quadro card for Windows 2012.
Now that the server has a good graphics card, and the relevant driver installed, the next step is to enable RemoteFX in Hyper-V. RemoteFX has a prerequisite of the Remote Desktop Virtualization Host role service, so if you've not installed it yet, go ahead and install just that role. Unfortunately, the server will require a reboot at this point.
Open up Hyper-V Manager, right click your Hyper-V server and select "Physical GPUs". Here you can select the GPU and then the checkbox "Use this GPU with RemoteFX"
Lastly, we're going to go ahead and enable RemoteFX on our Client PC. This is done in the Virtual Machine Settings by adding new hardware, and selecting the RemoteFX 3D Graphics Card.
NOTE: If this is greyed out then it means you did not meet all the hardware requirements!
Most likely, your CPU does not support SLAT.
After adding the card, we power the virtual machine back on, and perform the exact same tests we just did. No need to install any drivers! They're already there because they're part of the Hyper-V tools.
Performance Testing (After)
Here we have the startup - as you can see, a lot faster than it was earlier.
The results of the 2D Mark - an improvement of at least 50% from previous.
And the results of the 3D Mark - as you can see it's much better than it was before.
Proof of the pudding
Earlier, I was boasting that you can play HD videos through RDP. Don't believe me? Well, here's me playing The Aurora through VLC and you can clearly see that this is HD quality. Not Full HD mind you, but 720p without skipping any frames.
The video featured is The Aurora (Northern Lights) and can be seen on Vimeo (link below)
Limitations and Caveats
You should be aware of the following before running to your boss asking for money to buy some awesome graphics cards:
All the testing done in this article is based on Windows 8 or Windows 2012. RDP in both of these products use RDP version 8. If you have Windows 2008 R2 or Windows 7 clients or servers, then the performance won't be as amazing.
Microsoft has tested 12 vGPU's per GPU Core. This means that if you put in the maximum supported amount of 4 graphics cards, you can effectively run 48 virtual machines which have RemoteFX enable per physical machine. You are not however limited to this amount, so if your hardware can handle it, you can do even more.
NOT ALL GRAPHICS CARDS ARE SUITABLE! Be sure to check the Windows Server Catalogue (link below) for graphics cards
Don't be tempted to buy a Desktop Graphics card thinking "Surely 3072 CUDA Cores is a lot better than a piffling 192 CUDA Cores" - because firstly, your monster of a graphics card will probably not even fit in your server, and secondly, the server is not likely to be equipped with the power requirements needed to make it run. You may however find that Desktop products will work - they're just not recommended or approved for RemoteFX.
Certified Professional Graphics Cards
on Windows Server Catalogue
NVIDIA Quadro vs. GeForce GPUs
on NVIDIA (PDF)
All links were correct at the time of publishing. All hardware and software mentioned are Trademarks of their respective owners. The Aurora is copyright property of TSO Photography.