Monthly Archives: August 2012

Tuning Windows 8 for EUC deployments

I must preface this post by saying that my goal was to “tune” Windows 8 to achieve IOPS and CPU numbers that were equal to if not better than that of Windows 7. If the Internet is to be believed, this should not have been difficult. The truth is that in the EUC world things are not as simple as they are in the physical desktop world.

One of the easiest ways to reduce CPU utilization in Windows 7 was to disable Aero. I have nothing against Aero, but when you are trying to squeeze as many desktops as you can on each server CPU core it is a luxury you can do without. With Windows 8, Aero is now mandatory (at least it appears that way). No more disabling Aero to squeeze every last bit of performance out of your image.

Aero notwithstanding, tuning Windows 8 is similar in many ways to tuning Windows 7. My tuning is geared towards task worker environments where the focus is on applications.

The following services, unless required, should be disabled (see the VMware View Optimization Guide for Windows 7 for an explanation of each service):

BitLocker Drive Encryption Service
Block Level Backup Engine Service
Diagnostic Policy Service
Home Group Listener
Home Group Provider
IP Helper
Microsoft iSCSI Initiator Service
Network Connectivity Assistant
Secure Socket Tunnrling Protocol Service
Security Center
UPnP Host Service
Windows Backup
Windows Defender
Windows Error Reporting Service
Windows Firewall
Windows Media Player Network Sharing Service
Windows Update
WLAN AutoConfig
WWAN AutoConfig
SSDP Discovery

Place the following commands in a batch file and execute it to remove unneeded scheduled tasks. Details about each task can be reviewed in the Windows Task Schedule prior to deletion if you are curious about what each does.

SCHTASKS /Delete /TN “MicrosoftWindowsApplication ExperienceAitAgent” /F
SCHTASKS /Delete /TN “MicrosoftWindowsApplication ExperienceProgramDataUpdater” /F
SCHTASKS /Delete /TN “MicrosoftWindowsApplication ExperienceStartupAppTask” /F
SCHTASKS /Delete /TN “MicrosoftWindowsAutochkProxy” /F
SCHTASKS /Delete /TN “MicrosoftWindowsBluetoothUninstallDeviceTask” /F
SCHTASKS /Delete /TN “MicrosoftWindowsCustomer Experience Improvement ProgramBthSQM” /F
SCHTASKS /Delete /TN “MicrosoftWindowsCustomer Experience Improvement ProgramConsolidator” /F
SCHTASKS /Delete /TN “MicrosoftWindowsCustomer Experience Improvement ProgramKernelCeipTask” /F
SCHTASKS /Delete /TN “MicrosoftWindowsCustomer Experience Improvement ProgramUsbCeip” /F
SCHTASKS /Delete /TN “MicrosoftWindowsDefragScheduledDefrag” /F
SCHTASKS /Delete /TN “MicrosoftWindowsDiskDiagnosticMicrosoft-Windows-DiskDiagnosticDataCollector” /F
SCHTASKS /Delete /TN “MicrosoftWindowsDiskDiagnosticMicrosoft-Windows-DiskDiagnosticResolver” /F
SCHTASKS /Delete /TN “MicrosoftWindowsFileHistoryFile History (maintenance mode)” /F
SCHTASKS /Delete /TN “MicrosoftWindowsLiveRoamingMaintenanceTask” /F
SCHTASKS /Delete /TN “MicrosoftWindowsLiveRoamingSynchronizeWithStorage” /F
SCHTASKS /Delete /TN “MicrosoftWindowsMaintenanceWinSAT” /F
SCHTASKS /Delete /TN “MicrosoftWindowsMobile Broadband AccountsMNO Metadata Parser” /F
SCHTASKS /Delete /TN “MicrosoftWindowsMobilePCHotStart” /F
SCHTASKS /Delete /TN “MicrosoftWindowsPower Efficiency DiagnosticsAnalyzeSystem” /F
SCHTASKS /Delete /TN “MicrosoftWindowsRasMobilityManager” /F
SCHTASKS /Delete /TN “MicrosoftWindowsSideShowAutoWake” /F
SCHTASKS /Delete /TN “MicrosoftWindowsSideShowGadgetManager” /F
SCHTASKS /Delete /TN “MicrosoftWindowsSideShowSessionAgent” /F
SCHTASKS /Delete /TN “MicrosoftWindowsSideShowSystemDataProviders” /F
SCHTASKS /Delete /TN “MicrosoftWindowsSpacePortSpaceAgentTask” /F
SCHTASKS /Delete /TN “MicrosoftWindowsSystemRestoreSR” /F
SCHTASKS /Delete /TN “MicrosoftWindowsUPnPUPnPHostConfig” /F
SCHTASKS /Delete /TN “MicrosoftWindowsWindows DefenderWindows Defender Cache Maintenance” /F
SCHTASKS /Delete /TN “MicrosoftWindowsWindows DefenderWindows Defender Cleanup” /F
SCHTASKS /Delete /TN “MicrosoftWindowsWindows DefenderWindows Defender Scheduled Scan” /F
SCHTASKS /Delete /TN “MicrosoftWindowsWindows DefenderWindows Defender Verification” /F
SCHTASKS /Delete /TN “MicrosoftWindowsWindows Error ReportingQueueReporting” /F
SCHTASKS /Delete /TN “MicrosoftWindowsWindows Media SharingUpdateLibrary” /F
SCHTASKS /Delete /TN “MicrosoftWindowsWindowsBackupConfigNotification” /F

Use PowerShell to remove the following Appx (Metro) software packages. Wild cards are used to remove packages that are related and include apps that focus on XBox, Zune, Bing, Windows Camera, and Windows Photos.

get-appxpackage -name Microsoft.Bin* | Remove-AppxPackage
get-appxpackage -name Microsoft.XBo* | Remove-AppxPackage
get-appxpackage -name Microsoft.Rea* | Remove-AppxPackage (optional; Microsoft PDF reader)
get-appxpackage -name Microsoft.Zun* | Remove-AppxPackage
get-appxpackage -name microsoft.microsoftsky* | Remove-AppxPackage
get-appxpackage -name Microsoft.Came* | Remove-AppxPackage
get-appxpackage -name microsoft.windowsphotos | Remove-AppxPackage
get-appxpackage -name microsoft.windowscomm* | Remove-AppxPackage

From the Windows Control Panel select “Turn Windows Features On or Off” and disable the following feature:

Windows Gadget Platform

The next settings involve group policies. You can either use traditional group policies applied through Active Directory (AD) or configure the policies on your master image. It is likely that your domain is not yet using Windows Server 2012 domain controllers, so if you want to use AD applied policies you will need to install the Remote Server Administration tools on a Windows 8 desktop (install using “Turn Windows Features On or Off” in the control panel) to edit Windows 8 group policy settings within your domain.

Configure the following Group Policy settings:

Computer Policies – Administrative Templates

System – Internet Communication Management – Internet Communication settings
Turn off access to the store : Enabled
Turn off the Windows Messenger Customer Experience Improvement Program: Enabled
Turn off Windows Customer Experience Improvement Program: Enabled
Turn off Windows Error Reporting: Enabled

System – System Restore
Turn off configuration: Enabled
Turn off System Restore: Enabled

System – Windows File Protection
Set Windows File Protection Scanning: Disabled

System – Windows HotStart
Turn off Windows HotStart: Enabled

Windows Components – Desktop Gadgets
Turn off desktop gadgets: Enabled
Turn off user-installed desktop gadgets: Enabled

Windows Components – Desktop Window Manager
Do not allow Flip3D invocation: Enabled
Do not allow window animations: Enabled
Use solid color for Start background: Enabled

Windows Components – File History
Turn off File History: Enabled

Windows Components – Store
Turn off Automatic Download of updates: Enabled
Turn off the Store application: Enabled

Windows Components – Windows Error Reporting
Disable logging: Enabled
Disable Windows Error Reporting: Enabled

Windows Components – Windows Messenger
Do not automatically start Windows Messenger initially: Enabled

Windows Components – Windows SideShow
Turn off automatic wake: Enabled
Turn off Windows SideShow: Enabled

You have probably noticed that I did not disable any indexing services. When I did this initially I experienced some odd errors within Windows, so for the time being I am leaving it on. With Metro using the search function more and more to find applications and files I think that indexing is likely a critical component of the desktop moving forward.

I will be updating this post over time as I run more tests and learn more about Windows 8. As it is today with these tuning parameters in place I am seeing similar CPU utilization and disk IOPS with Windows 8 as I was in Windows 7. These numbers (9.5 IOPS/desktop and CPU utilization sufficient to run 8 desktops/server CPU core) were observed using LoginVSI “medium” user work load simulations. My master image was Windows Windows 8 x32, 1 vCPU, 1 GB ram, Office 2010, and Adobe Acrobat X, running on VMware vSphere 5.