booting windows 10 spends too long
Solution 1:
To see why Windows boots slowly you need to install the Windows Performance Toolkit, which is part of the Windows 10 SDK.
(all other entries can be unselected)
Run WPRUI.exe, select First Level, CPU Usage, DiskIO, FileIO and under Performance Scenario select Boot. Number of iteration can be set to 1 and click to start.
This reboots Windows and captures all activity during boot. After the reboot let the countdown tick to 0.
Now make a double click on the generated ETL file to open the ETL in Windows Performance Analyzer (WPA.exe), click on Profiles->Apply->Browse Catalog and select the file FullBoot.Boot.wpaprofile
you see this overview:
and see that the longest delay happens during the WinlogonInit phase. This takes 197 seconds to finish.
The WinLogonInit subphase begins when SMSSInit completes and starts Winlogon.exe. During WinLogonInit, the user logon screen appears, the service control manager starts services, and Group Policy scripts run. WinLogonInit ends when the Explorer process starts.
Visual Cues WinLogonInit begins shortly before the logon screen appears. It ends just before the desktop appears for the first time.
WinLogonInit Performance Vulnerabilities
Many operations occur in parallel during WinLogonInit. On many systems, this subphase is CPU bound and has large I/O demands. Good citizenship from the services that start in this phase is critical for optimized boot times. Services can declare dependencies or use load order groups to ensure that they start in a specific order. Windows processes load order groups in serial order. Service initialization delays in an early load order group block subsequent load order groups and can possibly block the boot process .
When I look at the disk IO table, I see that the slow Samsung HDD (SAMSUNG Spinpoint M8
) is very busy. I can also see that the prefetcher ReadyBoost
is not working, it only generates "misses". This causes slowdowns to starting services like the lmhosts
which takes 129s to start.
As a workaround you can improve boot performance by running this command:
xbootmgr -trace boot -prepSystem -verboseReadyBoot
this reboots Windows several times, does a defrag and trains the prefetcher again. But to fully speedup boot, replace the 5400rpm HDD with a SSD.