Top 10 VMware View Performance Tips
When you examine the landscape of desktop virtualization solutions that are being implemented at organizations, two such solutions immediately stand out: Citrix XenDesktop and VMware View. I have written a lot on XenDesktop and I most certainly love the product, but I also have a secret love affair with VMware View.
In this article, I will show you how you can tweak VMware View and its PCoIP remoting protocol for optimal performance and the best possible user experience. Let’s get started:
1. Back to basics: Tweak the User Interface Visual Effects
- If possible, use the Windows Thin PC version of the OS
- Set Visual Effect to Best Performance
- Disable Desktop Wallpaper
- Disable Screen Saver or set it to None
- Revert back to the classic Start menu
- Disable Themes (if possible)
- Disable additional fading
- System icon and text changes
- Disable any unnecessary Windows services — Help and Support, Windows Audio (if you don’t need sound), Wireless, Remote Registry (be careful, though: some applications need this service, so make sure you properly test), Error Reporting — and any other service that is not needed
2. QoS PCoIP
If left without any QoS, PCoIP can consume up to 20MB per session, causing significant bandwidth usage on the LAN, WAN or remote. Thereby, I strongly suggest you QoS PCoIP and prioritize it immediately after VoIP in your environment.
3. PCoIP MaxLinkRate (Kbps)
This is equivalent to the duplex speed; set to a default of 1Gbps. Unless there is a need to change it, I would leave it at that:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Teradici\ PCoIP\pcoip_admin_defaults\pcoip.max_link_rate
4. PCoIP MTU Size (bytes)
This is the Maximum Transmission Unit for the PCoIP session. Keep in mind when configuring this setting that both endpoint’s MTU settings would have to match to maximize performance. If they differ, the lowest MTU value is used:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Teradici\ PCoIP\pcoip_admin_defaults\pcoip.mtu_size
5. PCoIP Bandwidth Floor (Kbps)
Defines the minimum bandwidth that a session will consume when network congestion is detected. The default value is set to 1000Kbps; increasing this value will give users a better user experience, of course:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Teradici\ PCoIP\pcoip_admin_defaults\pcoip.device_bandwidth_floor
6. PCoIP Minimum Image Quality (0-100)
The default value here is 50 and in my deployments this value has worked well. Remember, a higher frame rate will deliver a smooth experience at the expense of image quality. The lower the frame rate value, the poorer the image quality, but the session will respond better. Find a good medium that works for you. Conversely, a higher image quality will do exactly the opposite and deliver crisp images at the expense of a slower session roaming experience:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Teradici\ PCoIP\pcoip_admin_defaults\pcoip.minimum_image_quality
7. PCoIP Maximum Initial Image Quality (0-100)
The default value is 90. In my deployments values have varied between 70 and 90. This setting behaves as follows:
- A higher initial image quality means that larger bandwidth bursts will be used when refreshing or updating a larger end-user screen change
- A lower initial image quality means that less bandwidth bursts will be used when refreshing or updating a larger end-user screen change:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Teradici\ PCoIP\pcoip_admin_defaults\ pcoip.maximum_initial_image_quality
8. PCoIP Maximum Frame Rate (0-30)
The default value is 30, but I have seen better results when dropping it to 15. This setting deals with the frequency of frames, or how many frames per second at which your end-user screen refreshes. Of course, the higher the rate the better the experience; the lower the rate the less data you send across the wire. So, be sure to test:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Teradici\ PCoIP\pcoip_admin_defaults\pcoip.maximum_frame_rate
9. PCoIP Audio Policy (1/0)
Unless audio is explicitly needed, this setting should be disabled to save significant bandwidth and improve the user experience:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Teradici\PCoIP\ pcoip_admin_defaults\pcoip.enable_audio
10. PCoIP Encryption (1/0)
I have had better performance setting this to Salsa256 than to AES128, but be sure to run your own tests and validate:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Teradici\PCoIP\ pcoip_admin_defaults\pcoip.enable_salsa20_256_round12
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Teradici\PCoIP\ pcoip_admin_defaults\pcoip.enable_aes128
11. WAN Considerations
- Ensure VPN solution supports UDP tunneling, not just encapsulation.
- Beware of double NAT’ed client IPs.
- PCoIP requires 1MB of peak bandwidth. When planning, consider allocating 500Kbps per user even though the typical user will consume about 200-300 Kbps.
Ok, so it was really 11 tips, but hey, 10 tips sounds better. You will notice that some of these settings you can deploy via Microsoft GPO, while others you will have to modify via the Windows master image prior to deployment. Just be sure to spare no detail: Whatever you can disable in Windows to make it run faster, don’t hesitate to disable — every little bit counts and if you can tweak the environment well enough, you will save on vCPU usage and also on memory usage and provide the best possible user experience.
As an old school Citrix guy, I chuckle when I remember the good ol’ days of MetaFrame 1.8 or MetaFrame XP, when this type of tweaking was done and more. We used to have a complete cheat sheet on MetaFrame Tips and Tricks. This goes to show that no matter how much VDI is glorified, at the end of the day it is a server-based computing model. All the performance made to a Terminal Server apply to VDI as well.