Category Archives: Virtualization

Solving Poor RDP performance for Windows 8 clients under Parallels 8 (OSX Mavericks)

If you are somewhat like me, purchasing a new copy of Parallels each year to receive a couple of “bug-fixes” and “performance updates” ranks somewhere between a visit to the dentist and a prostate exam.

Hence you may probably understand my frustration when I faced serious performance issues accessing a brand new copy of Windows 8.1 remotely via RDP. Via RDP, you ask? Yes, it just so happens that I utilise a “high-end” Windows 8.1 workstation to access my MacBook Pro via VNC. The Windows virtual machines on the MacBook are accessed via RDP. There are also two Linux Virtual Machines that I connect to as well, but mostly via SSH. They are not pertinent to this article, and I’m not sure why I bothered mentioning them in the first place!

The image below may explain how I conduct my daily affairs (cough.)

Parallels RDP performance

The Windows 7 VM was not exhibiting any performance issue, so it was definitely not something that was network related. Allocating additional physical resources (RAM, VRAM) to the Windows 8 VM did nothing to improve performance.

A Google search proved useless. Sure, there were numerous posts that encouraged me to mess around with the TCP auto-tuning feature, namely…

netsh interface tcp set global autotuning=disabled

which didn’t work. You can go ahead and execute the command from an elevated command prompt though, to see if it makes a difference on your hardware.

After sprouting a couple of additional grey hairs, I decided that the best bet towards solving this issue was to determine the type of hardware acceleration used within the VM. RDP on Windows 8.x tends to rely extensively on acceleration within the video drivers on the host. Was it possible that the drivers installed by Parallels weren’t good enough?

I shut down the Virtual Machine and looked at the Configuration –

Configure

From within the configuration dialog box, I clicked on the Hardware tab, followed by Video. I soon saw something very interesting. My pre-existing copy of Windows 7 was using DirectX 9 3d Acceleration. However, the new Windows 8.1 Virtual Machine was configured to use DirectX 10 instead! Could this be the holy grail to my RDP woes? I changed the hardware acceleration to DirectX 9 and rebooted the Virtual Machine…

parallels8-settings

And lo and behold… it worked! RDP performance was as smooth as a hot knife through (low cholesterol) butter, and performance matched my Windows 7 RDP session. I have no idea why this made a difference. I can only speculate that Parallel’s DirectX 10 drivers aren’t optimised for RDP. They are instead most likely optimised for gaming on the same physical machine that runs the virtual machine.