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.