Top 10 VMware View Performance Tips by Elias Khnaser
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:
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_MACHINESOFTWAREPoliciesTeradici PCoIPpcoip_admin_defaultspcoip.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:
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:
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_MACHINESOFTWAREPoliciesTeradici PCoIPpcoip_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:
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:
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:
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.
I will leave you with this: Tweaking VDI is an art, not a science. I can write books (and I have) on the subject and it would still be different in your environment when running your applications over your network. Use my tips as a framework -- not a bible -- for tweaking and enhancing your VMware View deployments.