How to diagnose slow booting or logon in Windows?

The tools XPerf and XBootMgr from the WPT (available in Windows SDK or below) are great for troubleshooting any performance related problems on Windows; whether it is at boot or hick-ups during a Full HD video, these tools help you to pinpoint the problem. They are free and from Microsoft. :-)

Performance Analysis

Troubleshooting of slow systems can be done like this:

  1. Download the setup from Windows Performance Analysis Tools for your Windows version.
  2. Install the software on your system.
  3. Open a command prompt as administrator, and copy paste the next command:

    xperf -start perf!GeneralProfiles.InBuffer && timeout -1 && xperf -stop perf!GeneralProfiles.InBuffer myTrace.etl
    
  4. Press ENTER once to start the command, now you will have to wait till your the action is done.

  5. Right after your action is done you go to the console and press ENTER.
  6. After waiting some time a log file myTrace.etl will be produced.

Either analyze this yourself, or if you can't find the issue, upload it and I'll help you:

  1. Compress this to a zip file, put it online somewhere (perhaps 2shared).
  2. Share the link here, I will do an attempt to find and show you the cause of your problem.

Boot Analysis

For an user-friendly and simple approach, check @harrymc suggesting Soluto.

For detailed boot analysis, check this document, XBootMgr.exe is available in the WPT I linked earlier.

Following the instructions in the document will result in a similar log which you could analyze or upload...


UPDATE: Soluto has moved on and its software relates now to the mobile world.  Soluto’s original “Anti-Frustration Software” is no longer available from the manufacturer; one would need to look on the Internet for an old version of it, which might not still work after all.

A pity, since it was a rather unique product.

Here is an archived copy of their website.  Their URL now redirects to asurion.com, which appears to offer technical services, but no products.


Soluto is an excellent boot-analysis product.

For more info see: Soluto Figures Out What’s Bogging Down Your PC (And Tells You How To Fix It).

screenshot of Soluto’s “Anti-Frustration Software”


I have an additional suggestion for tracking boot time. It is via Event 100 in Event viewer. Drill down this chain:

Eventvwr 
-->Applications and Service Logs
-->Microsoft
-->Windows
-->Diagnostics - performance
-->Operational
-->Event ID 100<--

Then double click on Event 100 which gives you this small window indicating the boot time.

enter image description here

Then click on the 'Details' tab which gives you all this additional information from which you should be able to determine the process which takes the most time during boot.

EventData 

  BootTsVersion 2 

  BootStartTime 2015-04-09T15:19:05.671600300Z 

  BootEndTime 2015-04-09T15:21:34.500099800Z 

  SystemBootInstance 1174 

  UserBootInstance 1155

  BootTime 24239 

  MainPathBootTime 12239 

  BootKernelInitTime 19 

  BootDriverInitTime 291

  BootDevicesInitTime 906 

  BootPrefetchInitTime 0 

  BootPrefetchBytes 0 

  BootAutoChkTime 0 

  BootSmssInitTime 8551 

  BootCriticalServicesInitTime 410 

  BootUserProfileProcessingTime 823 

  BootMachineProfileProcessingTime 70 

  BootExplorerInitTime 499 

  BootNumStartupApps 7 

  BootPostBootTime 12000 

  BootIsRebootAfterInstall false 

  BootRootCauseStepImprovementBits 0 

  BootRootCauseGradualImprovementBits 0 

  BootRootCauseStepDegradationBits 0 

  BootRootCauseGradualDegradationBits 0 

  BootIsDegradation false 

  BootIsStepDegradation false 

  BootIsGradualDegradation false 

  BootImprovementDelta 0 

  BootDegradationDelta 0 

  BootIsRootCauseIdentified false 

  OSLoaderDuration 1894 

  BootPNPInitStartTimeMS 19 

  BootPNPInitDuration 932 

  OtherKernelInitDuration 411 

  SystemPNPInitStartTimeMS 1338 

  SystemPNPInitDuration 265 

  SessionInitStartTimeMS 1609 

  Session0InitDuration 4563 

  Session1InitDuration 553 

  SessionInitOtherDuration 3434 

  WinLogonStartTimeMS 10161 

  OtherLogonInitActivityDuration 686 

  UserLogonWaitDuration 182