Діагностика повільного завантаження Windows за допомогою Process Monitor

Для діагностики причин повільного завантаження ОС Windows існує ряд досить потужних утиліт і методик аналізу журналів подій, що дозволяють виконати детальну налагодження всіх етапів процесу завантаження системи і запуску служб (xperf / xbootmgr з Windows Performance Toolkit / Analyzer). Але їх використання може викликати ряд труднощів, особливо для початківця системного адміністратора. У цій статті ми покажемо, як за допомогою Process Monitor можна досить просто і швидко визначити, які програми, служби та драйвера довго виконуються при старті системи, збільшуючи тим самим загальний час завантаження для користувача.

Безумовно, всім системним адміністраторам Windows, повинна бути знайома утиліта Process Monitor з комплекту системних утиліт Sysinternals. Утиліта Process Monitor дозволяє в реальному часі відстежувати активність запущених процесів, звернення до файлової системи і реєстру. Однією з маловідомої функцією Process Monitor є можливість включення режиму моніторингу процесів запускаються під час завантаження Windows.

Для діагностики етапу завантаження, Process Monitor створює окрему службу в розділі реєстру HKLM \ SYSTEM \ CurrentControlSet \ Services. Дана служба завантажує драйвер режиму завантаження procmon23.sys, стартує після запуску Winload.exe, який веде протокол активність всіх, процесів виконуються під час запуску системи і входу користувача.

  1. Скачайте і розпакуйте архів з Process Monitor (Http://download.sysinternals.com/files/ProcessMonitor.zip)
  2. Запустіть з правами адміністратора файл procmon.exe
  3. У меню Options виберіть пункт Enable Boot Logging
  4. У вікні виберіть опцію Generate thread profiling events -> Every second. В цьому режимі драйвер procmon буде перехоплювати стан всіх процесів кожну секунду
  5. Перезавантажте комп'ютер і дочекайтеся появи робочого столу
  6. Драйвер procmon23.sys буде записувати всі події до тих пір, поки користувач не запустить утиліту Process Monitor. Після цього режим протоколювання завантаження відключається.
  7. У вікні Process Monitor погоджуємося з пропозицію зберегти зібрані дані в файл.Примітка. Якщо не зупинити роботу Process Monitor, то тимчасовий файл журналу% windir% \ procmon.pmb з часом займе весь вільний простір на системному диску.
  8. Виберіть каталог, в якому потрібно зберегти файл і дочекаєтеся його збереження. У моєму випадку в цільовому каталозі з'явилося три файли Bootlog .pml, Bootlog-1.pml і Bootlog-2.pml загальним розміром 700 Мб.
  9. Клацніть по заголовку таблиці в вікні ProcMon, виберіть Select Columns і включите відображення стовпця Duration
  10. Створимо новий фільтр в меню Filter.
  11. Як параметр фільтрації вкажемо Duration, умова more than і значення 10. Натисніть кнопку Add і ОК.
  12. Таким чином, в списку процесів виявляться тільки ті процеси, у яких на виконання деяких операцій пішло більше 10 секунд (10 секунд я вибрав для більшої наочності прикладу).
  13. Також для аналізу процесу завантаження можна скористатися функцією в меню Tools -> Process Tree, що дозволяє відобразити всі процеси у вигляді графічного дерева з інформацією про початок, закінчення і тривалості процесу.

Залишилося проаналізувати отриманий список процесів (в разі потреби можна провести подальший аналіз проблемного процесу, включивши фільтр по імені виконуваного файлу), співвіднести процеси зі службами, програмами і драйверами і провести оптимізацію системи.

Як правило, цей аналіз допоможе виявити "гальмують" процеси, засів в системі троян (в першу чергу потрібно аналізувати дочірні процеси Winlogon.exe), прийняти рішення про необхідність видалити / оновити проблемне ПО або драйвер пристрою, відключити деякі служби або змінити тип їх запуску (відкладений запуск або ручної на вимогу), прибрати програми з автозавантаження. Найчастіше в цьому списку виявляються антивіруси та інше "важке" ПО.