This is the third part of the series about Microsoft Windows 10 for VDI, the first two parts were about setting up the virtual machine and installing Windows 10. This blog post is about tuning the Microsoft Windows 10, so about Windows services and the schedules tasks. Tuning a VDI desktop is the most important task to do when setting up an environment. If you don’t tune you need a huge number of resources. Still, with Microsoft Windows 10, you need enough resources as it is eating them like hot buns. We deploy with RES One Automation and our job right now looks like this.
We need to combine a few tuning jobs, they grew larger and split up as we proceeded. This series is about this project, to deploy the perfect Golden image. This series consists of a couple of articles
- Microsoft Windows builds, versions – Click here
- Creating the virtual machine – Click here,
- Installing Windows 10 – Click here.
- Tuning Windows services and scheduled tasks, you’re reading it.
- Deploying the golden image (coming soon…. )
- Resource usage of Windows 10 in a VDI environment – link
So let’s get started, the desktop is running… The RES ONE Automation agent is up and running so we can shoot some projects at it to tune it. Let’s start with the services. Microsoft Windows 10 has a lot of services you don’t need, on top of that they also added the Hyper-v services too, would be great if you could get a Windows 10 version without all the “extra’s”.
So the next services are safe to disable, mind you it’s a lengthy list;
Adobe ARM | Hyper-V Time Sync | SSDP Discovery |
AllJoyn router | Hyper-V RDV | UPnP Device Host |
Application Layer Gateway | Hyper-V VM | IPHelper |
BitLocker Drive encryption | Hyper-V Heartbeat | Volume Shadow copy |
Block Lever Backup Engine | Hyper-V Shutdown | Windows Defender |
Bluetooth Handsfree | Hyper-V Guest | Windows Connect now |
BlueTooth Support | Hyper-V KVP Exchange | Windows Media Player Networking |
SuperFetch | Internet connection | Windows Mobile hotspot |
Diagnostics Policy | iSCSI Initiator | Windows Update |
Diagnostics Service | Microsoft Software Shadowing | Windows Search |
Diagnostics System | Microsoft Storage Spaces | WLAN AutoConfig |
Diagnostics Tracking | Network Services for Xbox | WWAN AutoConfig |
Extensible Authentication | Network Location Awareness | Xbox live verification management |
Geo Location | Network List Service | |
Google Update Service | Offline files | |
HomeGroup Listener | Optimize Drives | |
HomeGroup Provider | Retail Demo Service | |
Hyper-V Host | Sensor Monitoring | |
Hyper-V VSS | Shell Hardware Detection |
Was this long enough for you guys? Disable all these services to tune Microsoft Windows 10. My advice is to tune services after you install all the applications are installed, some of the applications will install services themselves. I like to tune a Golden image at the end so that the tuning is the closure.
I use RES ONE Automation for this, we got a project there that involves some steps, a step is a module. I added some screenshots of the task we used, there is a guy in my project that took my Powershell script and expanded that into this module.. kudos to him as this is more workable as I can see which service isn’t disabled at the end.
The table is also found here as an HTML file, perhaps that is easier for you guys to read. Click on the link to get to the file – link.
So with this, you can move on and disable the scheduled tasks in Microsoft Windows 10. If you browse through the scheduled tasks you get so many of them like the list never stops. I’ll put them in a table here and give you the command to disable them.
The Table below is a bit off because of the template of WordPress, so I exported it to HTML for you. The HTML file is found right here. – link .
Adobe Acrobat Update task | \Microsoft\Windows\Windows Defender\Windows Defender Cache maintenance |
GoogleUpdateTaskMachineCore | \Microsoft\Windows\Windows Defender\Windows Defender CleanUp |
GoogleUpdateTaskMachineUA | \Microsoft\Windows\Windows Defender\Windows Defender Scheduled Scan |
klcp_update | \Microsoft\Windows\Windows Defender\Windows Defender verification |
\microsoft\Office\Office 15 Subscription Heartbeat | \Microsoft\Windows\WCM\WiFiTask |
\Microsoft\Office\OfficeTelemtryAgentFallback | \Microsoft\Windows\UpdateOrchestrator\Schedule Scan |
\Microsoft\Office\OfficeTelemetryAgentLogon | \Microsoft\Windows\UpdateOrchestrator\Refresh Settings |
Microsoft\Windows\.Net Framework\.NET Framework NGEN v.4.0.30319 | \Microsoft\Windows\UpdateOrchestrator\Reboot |
Microsoft\Windows\.Net Framework\.NET Framework NGEN v.4.0.30319 64 | Microsoft\Windows\Application Experience\Microsoft Compatibility |
Microsoft\Windows\.Net Framework\.NET Framework NGEN v.4.0.30319 64 critical | Microsoft\Windows\Application Experience\StartUpTask |
Microsoft\Windows\.Net Framework\.NET Framework NGEN v.4.0.30319 critical | \Microsoft\Windows\AutoChk\Proxy |
\Microsoft\Windows\DiskCleanup\silentCleanup | \Microsoft\Windows\Data Integrity scan\Data integrity scan |
\Microsoft\Windows\RetailDemo\CleanupOfflineContent | \Microsoft\Windows\Data Integrity scan\Data integrity scan for crash recovery |
\Microsoft\Windows\SettingSync\BackgroundUploadTask | \Microsoft\Windows\Maps\MapsToastTask |
\Microsoft\Windows\WindowsUpdate\Automatic App Update | \Microsoft\Mobile broadband Accounts\MNO Metadata parser |
\Microsoft\Windows\WindowsUpdate\Scheduled Start | \Microsoft\Windows\NlaSVC\WifiTask |
\Microsoft\Windows\WindowsUpdate\sih | Microsoft\Power effiency diagnostics\analyze system |
\Microsoft\Windows\WindowsUpdates\sihboot | \Microsoft\Windows\RAS\MobilityManager |
\Microsoft\Windows\Work Folders\Work Folders logon Synchronization | \Microsoft\Windows\RecoveryEnvironment\VerifyWinRE |
\Microsoft\Windows\Work Folders\Work Maintenance Work | \Microsoft\Windows\Shell\FamilySafetyMonitor |
\Microsoft\Windows\XblGameSave\XblGameSaveTask | \Microsoft\Windows\Shell\FamilySafetyRefreshTask |
\Microsoft\Windows\XblGameSave\XblGameSaveTaskLogon | \Microsoft\Windows\Shell\IndexerAutomaticMaintenance |
\Microsoft\Windows\Defrag\ScheduledDefrag | OneDrive Standalone Update Task v2 |
\Microsoft\Windows\SystemRestore\SR | \Microsoft\Windows\MemoryDiagnostic\RunFullMemoryDiagnostic |
\Microsoft\Windows\Registry\RegIdleBackup | \Microsoft\Windows\MemoryDiagnostic\ProcessMemoryDiagnosticEvents |
\Microsoft\Windows\Windows Defender\MPIdleTask | \Microsoft\Windows\Customer Experience Improvement Program\UsbCeip |
\Microsoft\Windows\Windows Defender\MP Scheduled Scan | \Microsoft\Windows\Customer Experience Improvement Program\KernelCeipTask |
\Microsoft\Windows\Maintenance\WinSAT | \Microsoft\Windows\Customer Experience Improvement Program\Consolidator |
\Microsoft\Windows\Application Experience\AitAgent | \Microsoft\Windows\Application Experience\ProgramDataUpdater |
The command to execute this all is a Powershell script and the command is schtasks /change /tn “<\folder path\name of the scheduled task” /Disable. With this, you disable the scheduled tasks.
Windows-Tuning
So with those two in place you are left with the normal tuning things, What to do with the page file, Event logs and so on. Let’s dive into that a little bit right now. There is no definite guide to how to tune, you tune according to what your users need for an environment.
High-performance plan
One of the things is a high-performance plan, Microsoft Windows always has been on balanced and balanced is good for FAT clients. For a VDI environment we want performance, you set the Hypervisor to High performance as well so why not do the same with the VDI desktop?
Below is the Powershell command to set the high-performance plan for a Windows machine… not something I got from SQLSoldier.net, kudos and credits to them. The Command is:
Try {
$HighPerf = powercfg -l | %{if($_.contains("High performance")) {$_.split()[3]}}
$CurrPlan = $(powercfg -getactivescheme).split()[3]
if ($CurrPlan -ne $HighPerf) {powercfg -setactive $HighPerf}
} Catch {
Write-Warning -Message "Unable to set power plan to high performance"
}
One little warning about this… that’s why just copying is not working you need to think as well. As I’m running a Dutch (the 2nd best country— LOL ) version of Windows 10 my power plans are named differently. so we don’t have high performance but a Dutch variant of it. It is just reading the text and executing so make sure it is according to your local language.
NumLock
From Jeroen Storm I got the comment that in my first article in this series I could have tuned a bit more, you can also set the num lock in the BIOS. He’s right of course and therefore I mention him here. In the environment, I’m building we set the num lock position with a VBS script when people log on to the VDI desktop. reasons are laptop users in this environment but now you know two methods for doing so. Good to see he reads my articles.
So we have a VBS script and a REG file and execute a hidden program at startup to set the value.
Conclusion
This kinda sums up what I wanted to write in this part… Next part is about the deployment of the Golden Image to a VDI desktop. We got a VMware Horizon environment running (7.0.2) and we will deploy (recompose in this case) a VDI environment. Of course, the fact that it is a VMware environment is nothing different than it being a Citrix one, deployment wise it apples or pears but both are fruit.
hope you enjoy reading this, there is more to come as for sure I forgot a dozen things to mention here… there might be an extra article with some extra information about tuning applications I think.
One thing to mention is something Thomas Poppelgaard mentioned, he had some performance issues when disabling Defender and search. So test before you deploy. We got some Excel 2013 CPU issues still under investigating and we are looking at what could be the issue… will do some testing and keep you posted.
Two remarks:
1. Disabling volume shadow copies will break Persona Management for those who use it;
2. High Performance was the default up to vSphere 4. From 5 onwards, Balanced is the new High Performance, mostly because the CPU C states are required to get Turbo Boost modes.
Could you also post Part 4 of this topic?
Deploying the golden image? I was writing that but thought that one has Citrix and others have VMware. Was wondering if it was useful as there is nothing specific concerning Windows 10 with deployment. Let me see if I can create a blog about this.
Hi Rob Beekmans, I am looking for the part “Next part is about the deployment of the Golden Image to a VDI desktop. We got a VMware Horizon environment running (7.0.2) and we will deploy (recompose in this case) a VDI environment”. can you send me a link please?
thanks.
I tried to create a Citrix Catalog on Xendesktop 7.12 with a Windows 10 template and it failed with error about licensing. Then I tried to run the “Sysprep” and found it failed because the error “. Is there a way to fix this problem? Thanks!
Hi,
Not sure where it went wrong with your image, i’ve seen the licensing thing happen a few times before. most of times Windows is activated a few moments later.
Have you tried to active it manually?
Do not disable the “Network List Service”. Otherwise you dont have any networkconnection after reboot.. (no LAN-Icon in the Task tray)
We are desperately trying to disable Windows Update, disabled all tasks and also disabled the Windows Update service and the Windows Modules Installer service, otherwise TIWorker will eat your CPU.
Thing is the moment we add the machine into the pool it enables both services again and the task \Microsoft\Windows\WindowsUpdate\sih and Scheduled Start is enabled and ready and running again. Any idea how to forcibly kill Windows Update on VDI??
Have you double checked that GPO isn’t forcing Windows update settings?
Well, the blog is two years old and I really can’t remember that anymore.
I’m pretty sure I checked it, having updates kicking-in would have been my first subject for investigation.