Virtual Desktop Optimisation – Enforcing Windows Visual Effects

By | July 21, 2014

Optimisation Type [explain] : user experience (↓↑) / resource optimisation (↑) / functionality (-) / administration (-)

Most people may not realise, but the Windows Visual Effects settings can have a direct impact to the user experience. Ok, that sounds a little too obvious, but it’s more than just turn on and off “eye candies” and making Windows look less appealing. Especially in resource constraint systems, changing these settings can improve on the user experience. The reason is simple, the “nicer” Windows look, the more resources it tends to consume.

 

Windows_Visual_EffectsNow, user experience in this post can mean 2 aspects; 1. experience in how nice Windows look and feel, and 2. experience in terms of how responsive and smooth the movements and animations are. This post talks about optimising for Virtual desktops, which by default means reducing (1), and increasing (2). The main reason we want to optimise this is for (2) and to reduce resource consumption due to these Visual Effects.

Virtual desktop performance has one more dimension which is never really an issue for physical machines, that is network. By reducing the amount of animation, and screen redraws, there will be less pixel changes to be sent across the network. Thereby reducing the network bandwidth requirements. Regardless of display protocol, this should stand true.

If you have ever used Webex, you might have notice a screen flicker when you first share your desktop to the web audiences. Did you realise that Windows might have looked a bit different after that? or if you try dragging a window, you only see grey border that is being dragged. You no longer see window contents while dragging. This was done to reduce the amount of changed pixels that have to be sent from your computer to all the audiences.

By default, Windows will try to choose what’s best for your computer. It determine this by various means, such as hardware capabilities, and by executing the Windows Experience Index. On a typical home PC, these are done automatically and the individual settings can change without you noticing.

Now, in virtual desktop world, we would not leave this to chance, and would want to ensure that the display protocol is loaded as little as possible. This leaves a big opportunity for us to tune the visual effects.

In a Windows 7 optimisation guide published by Microsoft, one of the options recommended is to tune the Visual Effects settings.

So, what are the settings I would recommend for a VMware View virtual desktop deployment? I have 2 answers.

  1. If users are keen to go all out for the most optimised Windows desktop; I would choose Adjust for best performance. This essentially turns off everything, which also reverts Windows 7 to look a bit like Windows XP (as some would put it).
  2. I have some users (including myself) who would really like to optimise everything, but still maintain at least a Windows 7 look to the desktop. In this case, we have to opt for a Custom selection where everything but Use visual styles on windows and buttons, has to be disabled.

Now, if the choice is #2, there is one more thing to watch out for. Part of  the VMware Windows Optimisation guide actually recommends disabling the Windows Themes service. We have to keep the service running in order for Windows 7 desktop to keep its look.

Windows_Theme_Service

 

Now, we know what we want to achieve, question now is how it can be done?

This is a tricky one as it is a user based configuration, and not quite something that you can update via changes to a parent desktop image. Well, yes we can update the default user profile in Windows 7, but these settings will only be made default for users who are getting their profile created for the first time on log on. So, for users who already have existing profiles, such a change will not impact them. Additionally, even if new users are being created with an altered default settings, they can probably still have the ability to change it.

Group_Policy_PreferencesSo as with all things to be “forced upon” the users, the most effective way is to apply this via a GPP (Group Policy Preferences). This can only be done from Group Policy Management on a Windows 2008 server, and is not found on the local group policy editor (gpedit.msc). Create a new or update an existing GPO as normal, and edit it.

In the Group Policy Management Editor, navigate the nodes User Configuration > Preferences > Windows Settings > Registry. Yes, there is no nice GUI drop-down-click-click way to configure this. It has to be done by means of changing registry keys.

Next, is to slowly provide the registry keys and the values to be changed. There are many blog posts out there which you can get a comprehensive list of settings and values you can set. I’ll leave you to google that out. Instead I’ll give you the exact settings I’ve configured to achieve #2.

If you need more guidance to create the registry entries, this is a pretty good guide I found.

Now, I have read in many places that these settings can be changed in registry, but may not take effect in Windows. This is partially true. When I first tried to do this, I simply tried importing a .reg file but nothing changed. This method of applying via Group Policy works, and I have tested it.


[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects]
(REG_DWORD) VisualFXSetting = 3

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
(REG_SZ) TaskbarAnimations = 0
(REG_SZ) ListviewAlphaSelect = 0
(REG_SZ) ListviewShadow = 0

[HKEY_CURRENT_USER\Control Panel\Desktop]
(REG_BINARY) UserPreferencesMask = 9012038010000000
(REG_SZ) DragFullWindows = 0
(REG_SZ) FontSmoothing = 0

[HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics]
(REG_BINARY) MinAnimate = 0

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager]
(REG_SZ) ThemeActive = 1
(REG_EXPAND_SZ) DllName = %SystemRoot%\resources\themes\Aero\Aero.msstyles

 

I hope this post is able to help you out in some way. If you find it useful, please do share it and let me know.

[Update 20141130] corrected typo for “VisualFXSetting” – it had an extra “s” at the end.
[Update 20150410] If you are looking for settings for Windows 8.1, they are found here.
[Update 20150425] corrected typo for “WindowMetrics”

One thought on “Virtual Desktop Optimisation – Enforcing Windows Visual Effects

  1. Pingback: Jason's Windows 7 Optimisation Guide for Virtual Desktops

Leave a Reply