What is the Windows Performance Toolkit?
Windows Performance Tools are designed for analysis of a wide range of performance problems including application start times, boot issues, deferred procedure calls and interrupt activity (DPCs and ISRs), system responsiveness
issues, application resource usage, and interrupt storms.
Installation of the Windows Performance Tools
The Windows Performance Tools (WPT) is part of the Windows 8.1 SDK and the Windows Assessment and Deployment Kit. In this guide I’ll use the Windows 8.1 SDK Installer to install
the WPT.
Go to the download site of the SDK:
http://msdn.microsoft.com/en-US/windows/desktop/bg162891
and click on the button download to download the Webinstaller:
and store the installer on your HDD. Now run the setup and this screen shows up:
Click next and select the WPT from the list:
Click «Install» and the Setup downloads the required files.
and installs the WPT
After a reboot (required to add the WPT folder to the PATH variable to run the tools from every place) you are ready to use xperf.
I have a nice tip for you: The setup stores the MSI files in the folder
C:Program Files (x86)Windows Kits8.1Windows Performance ToolkitRedistributables The 32Bit version is named
WPTx86-x86_en-us.msi, the 64Bit version is named WPTx64-x86_en-us.msi. The 3rd file (WPTarm-arm_en-us.msi) is needed for ARM based tablets/notebooks which run Windows RT. You can store them and use them on a different PC. This avoids
to download the files over and over again.
To learn more about the Windows Performance Tools go to the Windows Performance Analysis Developer Center
.
See also: Windows Performance Toolkit
Количество загрузок:3,058 (24 за последнюю неделю)
Операционная система:Windows XP/Vista/7/8/10/11
Последняя версия:7.1
Сообщить о неточности
Описание
Вы можете бесплатно скачать Microsoft Windows Performance Toolkit 7.1 с нашего сайта. Файл последней версии пакета установки 497 KB.
Это бесплатное программное обеспечение принадлежит Microsoft. Вы можете установить это бесплатное ПО на Windows XP/Vista/7/8/10/11 32 и 64-бит.
Версии 7.1, 4.8 и 4.6 наиболее популярны среди пользователей. «.etl» — это расширение, с которым эта бесплатная программа может использоваться.
Наиболее часто используемые названия файлов установки этого программного обеспечения: WpfPerf.exe, sidebar.exe и xperfview.exe и т.д. Наш встроенный антивирус проверил эту закачку и признал ее как 100% безопасную. ПО принадлежит к категории Разработчикам.
От разработчика:
The Windows Performance Tools (WPT) Kit contains performance analysis tools that are new to the Windows SDK for Windows Server 2008 and .NET Framework 3.5. The WPT Kit is useful to a broad audience, including system builders, hardware manufacturers, driver developers, and general application developers. These tools are designed for measuring and analyzing system and application performance on Windows Vista, Windows Server 2008, and later.
Мы предлагаем оценить другие программы, такие как Microsoft DirectX SDK, Smart Install Maker или Advanced Installer, которые часто используются вместе с Microsoft Windows Performance Toolkit.
Обновлено:
10 нояб., 2022
Последние обновления
Зачастую это всего лишь вопрос времени — когда замедлится загрузка компьютера на базе Windows. Как правило, всему виной постепенно заполняющийся жесткий диск, на котором лежат программы, автоматически запускающиеся вместе с операционной системой. Кроме того, не забывайте и о возрастающей фрагментации системных файлов.
С чем мы работаем:
> Windows
Описанная здесь оптимизация запуска подходит для версий 7, 8/8.1 и 10.
> Software Development Kit
Нужная нам утилита Xbootmgr входит в состав Windows Performance Analyzer, компонента Windows SDK.
> Магнитный жесткий диск
Оптимизация с помощью функции Prefetching работает только на компьютерах с магнитными дисками.
Уже давно в Windows реализована функция автоматической дефрагментации жесткого диска. Каждый раз, когда вы не используете компьютер некоторое время, но оставляете его включенным, система начинает себя оптимизировать. При этом Windows не только объединяет отдельные элементы, чтобы они быстрее загружались, но и переносит важные системные файлы на край жесткого диска.
Предварительная выборка в качестве ускорителя системы
Предвыборка (Prefetching) отвечает за то, чтобы Windows уже при запуске компьютера загружала важные файлы в гораздо более быструю оперативную память еще до того, как они понадобятся. Для оптимизации, однако, следует «втолковать» системе, какие файлы она должна пометить как «важные». Как именно это сделать с помощью утилиты Microsoft Xbootmgr, мы расскажем в данной статье.
Xbootmgr ускоряет процесс запуска в два этапа: на первом утилита автоматически дефрагментирует загрузочные файлы и заново их размещает. На втором вы можете провести детальную оптимизацию, при которой Xbootmgr анализирует систему во время многократных перезагрузок. На основании этих данных утилита сообщает, в каком порядке лучше сохранить необходимые для запуска ОС файлы.
На пересечении строчки «Post Boot» и колонки «End Time (s)» этой программы для анализа вы узнаете, сколько времени занимает загрузка вашего компьютера. На нашей системе она длилась 24,3 секунды
Xbootmgr входит в состав набора Windows Performance Toolkit, который, в свою очередь, является частью официального комплекта Software Development Kit (SDK). Впрочем, от вас не требуется устанавливать SDK целиком. Достаточно при установке выбрать необходимые опции.
Результаты, достигнутые с помощью Xbootmgr, зависят от того, насколько хорошо Windows уже оптимизировала ваш ПК. Компьютеры с магнитными дисками после этого способны запускаться за 30 секунд — имеется в виду интервал между включением и тем моментом, когда вы действительно можете работать в системе. Но даже если загрузка занимает меньше минуты, Xbootmgr все равно дает ощутимое ускорение: так, наш тестовый компьютер сначала запускался за 24,3 секунд, после — за 20,9.
Подготовка к оптимизации системы
Чтобы Xbootmgr смогла ускорить компьютер, функции Prefetcher и Superfetch должны быть задействованы как в реестре , так и в Службах Windows
Для начала проверьте в реестре, активна ли предварительная выборка и запущена ли соответствующая служба Windows. Для этого нажмите на клавиши «Win+R» и введите «regedit». Теперь в реестре перейдите к ключу «HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSessionManagerMemory ManagementPrefetchParameters». В правой части окна дважды щелкните по DWORD-параметру «EnablePrefetcher» и установите его на «3». Повторите процедуру для параметра «EnableSuperfetch».
После этого убедитесь, что включена служба Windows «Superfetch». Нажмите на «Win+R», но теперь введите «services.msc». После вопроса «Контроля учетных записей» откроется окно «Службы». Найдите строчку «Superfetch» и дважды щелкните по ней. Вы увидите «Свойства: Superfetch». Убедитесь, что на вкладке «Общие» для «Типа запуска» выбран вариант «Автоматически». Под «Состоянием» также должно стоять «Выполняется». В противном случае нажмите на «Запустить». После внесения изменений перезагрузите компьютер.
Загрузка Windows SDK
Для установки Windows Performance Toolkit и Xbootmgr вам понадобится подходящий для вашей Windows пакет Software Development Kit. Пользователи Windows 10 могут скачать его по адресу https://developer.microsoft.com/ru-ru/windows/downloads/windows-10-sdk. Если у вас стоит Windows 7 или 8, зайдите на страницу https://developer.microsoft.com/ru-ru/windows/downloads/windows-8-sdk. В обоих случаях у вас скачается файл объемом примерно 1 Мбайт. Запустите его двойным щелчком мыши, чтобы вызвать «Мастера установки». Теперь нажимайте на «Next», пока не дойдете до «Условий лицензионного соглашения». Подтвердите свое согласие и в следующем окне под заголовком «Select the features you want to install» снимите все флажки, оставив только «Windows Performance Toolkit». По нажатию на «Install» программа скачает все необходимые файлы и установит их на ваш компьютер.
Замеряем точное время запуска
Xbootmgr — это мощная утилита для создания детальных протоколов с указанием времени загрузки компьютера. Папки, в которые будет сохраняться эта информация, вам придется заранее создать вручную в Проводнике. В нашем случае мы сделали на диске «C:» папку «temp», в ней сохранили еще две подпапки, «Before» и «After». Для того чтобы программа Xbootmgr действительно смогла измерить точное время, необходимо активировать автоматический вход в Windows — но только на время! Для этого нажмите «Win + R» и введите «netplwiz». В новом окне снимите флажок рядом с записью «Требовать ввод имени пользователя и пароля». Подтвердите свое решение нажатием на «ОК» и введите свое имя пользователя и дважды пароль.
Пора заняться ускорением запуска ПК. В принципе, оно осуществляется в три этапа: для сравнения, насколько быстрее стала загружаться операционная система, сначала измерьте с помощью Xbootmgr время до оптимизации. Затем Windows отрегулирует предвыборку, и в завершение уже на адаптированной системе будет определено, сколько было выиграно времени.
Оптимизация автозагрузки
Проблема, с которой не может справиться Xbootmgr, — слишком большое количество записей автозагрузки, которые накапливаются со временем. Для ее решения вам потребуется отдельная утилита, например, бесплатная Autoruns от Microsoft, которая составляет список всех записей и позволяет удобно их отключить.
> Запустите Autoruns с правами администратора и скройте все строчки, связанные с Microsoft. Для этого откройте «Options» и поставьте флажок рядом с записью «Hide Microsoft Entries».
> Перейдите к вкладке «Logons» и снимите все флажки с лишних строчек. Правой кнопкой мыши щелкните по программе, в чьем предназначении вы не уверены, и выберите «Search Online …». После отключения всех ненужных строчек автозагрузки закройте утилиту и перезагрузите компьютер.
Ускоряем запуск Windows
Предназначенная для измерения времени запуска утилита Xbootmgr не располагает графическим интерфейсом, из-за чего не особо удобна в использовании: управление осуществляется с правами администратора через окно командной строки. Полученные от утилиты протоколы вы затем сможете открыть и с комфортом проанализировать в Windows Performance Analyzer. Чтобы запустить Xbootmgr в Windows 10, кликните правой кнопкой мыши по иконке меню «Пуск» в левом нижнем углу и выберите «Командная строка (администратор)». Для Windows 7 вызовите «Пуск | Программы | Стандартные» и щелкните правой кнопкой мыши по «Командной строке». Выберите «Запуск от имени администратора». В обоих случаях положительно ответьте на запрос «Контроля учетных записей».
Завершите все задачи на ПК и сохраните открытые файлы. Затем введите команду «xbootmgr -trace boot -resultPath C:tempBefore». Спустя несколько секунд компьютер перезагрузится без дополнительных вопросов. Параметры, расположенные после названия программы, задают, что она должна делать. Например, «trace boot» отвечает за то, чтобы Xbootmgr измеряла время загрузки. «-resultPath» и следующий за ним путь к папке — в какую директорию программа сохранит файл протокола.
После перезагрузки Windows автоматически откроется небольшое окно с обратным отсчетом на 120 секунд. Не нажимайте здесь кнопку «Finish», а подождите, пока окно не закроется само. Также не запускайте никаких других программ, поскольку это может исказить результаты измерений. По завершении всего процесса вы найдете файл протокола в папке «C:tempBefore». Он имеет расширение «.ETL». Теперь запустите Проводник Windows, перейдите к папке «C:tempBefore» и двойным щелчком по файлу ETL откройте его в Windows Performance Analyzer.
Детальный анализ результатов измерений
Нажмите на маленький треугольник рядом с пунктом «Other», а затем произведите двойной щелчок по «Boot Phases». В верхней части экрана вы увидите различные фазы, которые проходит система Windows при загрузке. Каждая из них представлена в виде цветной полоски. Чем она длиннее, тем дольше длилась данная фаза. Таблица ниже сообщит более подробные значения. Общее время, которое занял процесс загрузки, вы увидите в строке «Post Boot» колонки «End Time (s)». Нашему компьютеру понадобилось чуть более 24 секунд для прохождения пяти фаз запуска.
В дальнейшем Xbootmgr перезагрузит ваш компьютер еще пять раз. В это время вы не сможете давать ему другие поручения. После каждого запуска даст о себе знать «Контроль учетных записей» и потребует подтверждения. Если это покажется вам слишком утомительным, на время измерений отключите защитный механизм. Для этого правой кнопкой мыши щелкните по значку меню «Пуск» и откройте Панель управления. Перейдите к «Учетным записям пользователей» и в следующем окне снова к «Учетным записям пользователей». Выберите пункт «Изменить параметры контроля учетных записей» и перетяните ползунок до конца вниз. Запомните первоначальную позицию, чтобы после оптимизации вернуть на нее ползунок.
Переход на SSD
Если время загрузки компьютера так и не сократилось, перенесите Windows на SSD и используйте его в качестве загрузочного накопителя.
> Программа EaseUS Partition Master Professional оснащена легким в управлении Мастером, который скопирует вашу Windows на SSD. Если у вас ноутбук, рекомендуем переходник с USB на SATA, который сейчас стоит не больше 700 рублей. К ПК вы можете подключить SSD напрямую через SATA-порт.
> Запуск переноса в EaseUS Partition Master Professional осуществляется из пункта «Миграция OS на SSD/HDD». Следуйте указаниям Мастера, а затем поменяйте в компьютере старый жесткий диск на новый SSD. Наш компьютер после оптимизации с помощью Xbootmgr и автозагрузки, а также переноса системы на SSD стал загружаться довольно быстро — за 36 секунд.
Оптимизация процесса загрузки
Чтобы начать оптимизацию, снова откройте окно командной строки с правами администратора и введите здесь команду «xbootmgr -trace boot -prepSystem -verboseReadyBoot -resultPath C:temp». Оба этих параметра («-prepSystem» и «-verboseReadyBoot») перемещают загрузочные файлы Windows на край жесткого диска и оптимизируют предварительную выборку. И в этом случае компьютер практически сразу же после отправки команды перезагрузится. Подождите, пока Xbootmgr не закончит шестую перезагрузку. При первой ядро анализирует поведение компьютера при запуске. При второй происходит дефрагментация загрузочных файлов и перемещение их на крайние дорожки жесткого диска. Следующие перезагрузки служат оптимизации порядка загрузки. Весь процесс, как правило, занимает от одного до двух часов. Не прерывайте его, даже если после сообщения «Preparing system …» кажется, что ничего не происходит уже вечность. Особенно долго длятся две первые перезагрузки.
на «Finish»
После проведения оптимизации компьютера повторно измерьте время, которое потребовалось Windows для запуска. Для этого снова откройте окно командной строки с правами администратора и введите команду «xbootmgr -trace boot -resultPath C:tempAfter». Тем самым результат измерения сохранится в подпапку «After». После проведения замеров дважды щелкните по новому файлу ETL и посмотрите, сколько времени понадобилось для загрузки системы. Наш компьютер стал запускаться за 20,9 секунды. Дополнительного ускорения можно добиться очисткой автозагрузки, а также благодаря установке твердотельного накопителя. Если вы по нашей рекомендации отключили «Контроль учетных записей» и активировали автоматический вход в Windows, по завершении оптимизации не забудьте вернуть их в исходное состояние.
Не стоит забывать и про то, что при старте системы вместе с ней запускается масса совсем не нужных пользователю программ и процессов. Это могут быть, например, сервисы справки от Adobe, программы автоматической проверки наличия обновлений, а также утилиты, которые «тихо» установились с другими программами. Отключить их загрузку можно с помощью бесплатной, но мощной программы для очистки и оптимизации — CCleaner. Установите программу, запустите ее и перейдите в раздел «Сервис | Автозагрузка». Выделите программу, которую вы хотите исключить из автозагрузки, и нажмите справа на «Выключить». Запуск отключенных программ при необходимости можно вновь включить.
В антивирусном пакете Kaspersky Internet Security 2017 интегрирован «Менеджер программ», который проконтролирует установку скрытых программ, а также выявит давно установленные ненужные приложения и предложит их удалить.
ФОТО: компании-производители; 3dsculptor/Fotolia.com
Вы тут: Главная → Windows → Этапы загрузки Windows под микроскопом Windows Performance Toolkit
Составить полное представление о загрузке Windows можно с помощью набора Windows Performance Toolkit. Утилиты командной строки xbootmgr и xperf позволяют создать подробный отчет о запуске системы и представить его в графическом и текстовом виде для всестороннего анализа загрузки.
Эта статья продолжает серию материалов о загрузке Windows. Вы уже знаете, как получить подробный отчет о загрузке и устранить основные системные проблемы, а также ускорить загрузку системы, не прилагая особых усилий. Вы также познакомились со способом диагностики загрузки с помощью журнала событий. Я уверен, что после изучения этих статей и применения полученных знаний на практике ваша система стала загружаться быстрее.
Однако эти простые способы не позволяют выявить скрытые факторы или проблемы, замедляющие загрузку Windows. Теперь настало время познакомиться поближе со всеми этапами загрузки Windows и провести их детальный анализ с помощью Windows Performance Toolkit (WPT).
[+] Сегодня в программе
Загрузка и установка WPT
С выходом каждой новой Windows обновляются средства для анализа производительности Windows, поэтому я рекомендую использовать Windows Performance Analyzer (WPA) из Windows ADK для диагностики загрузки всех поддерживаемых ОС Windows. Краткое руководство по работе с WPA включено в статью об изучении автозагрузки Windows. Изложенные далее сведения об этапах загрузки применимы ко всем поддерживаемым ОС Windows.
Посмотреть устаревшие инструкции по установке WPT для Windows 7
Подготовка к работе
Следуя трем простым правилам, вы застрахуете себя от возможных проблем, обеспечите правильную работу всех команд и точно измерите длительность загрузки.
- Прежде чем выполнить первую команду, создайте точку восстановления системы и убедитесь, что у вас есть под рукой установочный диск / флэшка или диск восстановления. Предупреждение вовсе не дежурное, ибо случаи неадекватного поведения WPT были отмечены у нас на форуме, да и сам я их видел.
- Включите автоматический вход в систему, чтобы задержка на ввод пароля не влияла на измерения.
- Убедитесь, что на разделе есть несколько гигабайт свободного пространства, поскольку при анализе могут создаваться файлы большого размера.
Все команды выполняйте в командной строке, запущенной от имени администратора. Там же можно добавить в меню пункт для ее запуска в нужной папке – пригодится.
Сбор данных
Все логи загрузки лучше хранить в одной папке, допустим, C:Trace. Откройте командную строку с полными правами и введите:
md c:Trace
Здесь и далее я буду использовать пути применительно к этой папке и стандартной установке WPT в 32-разрядной Windows 7. При необходимости изменяйте пути на свои.
Закройте все программы и сохраните все документы. Процесс сбора данных о загрузке системы запускается одной командой:
xbootmgr -trace boot -traceFlags BASE+CSWITCH+DRIVERS+POWER -resultPath C:Trace
Аналогичные команды можно использовать для диагностики
гибернации:
xbootmgr -trace hibernate -traceFlags BASE+CSWITCH+DRIVERS+POWER -resultPath C:Trace
сна:
xbootmgr -trace standby -traceFlags BASE+CSWITCH+DRIVERS+POWER -resultPath C:Trace
выключения:
xbootmgr -trace shutdown -noPrepReboot -traceFlags BASE+CSWITCH+DRIVERS+POWER -resultPath C:Trace
Примечание. Если при выполнении команд вы видите сообщение «xbootmgr не является внутренней или внешней командой», установка была неудачной. Вы найдете решение в этой теме форума.
Вернемся к загрузке, однако. Компьютер будет перезагружен. Если после входа в систему вы увидите запрос UAC от xbootmgr, разрешите утилите продолжить работу. Через две минуты вы увидите примерно такое окно.
Когда оно исчезнет, в папке C:Trace должно быть три файла, как показано на рисунке ниже.
Если вы вместо файла boot_BASE+CSWITCH+DRIVERS+POWER_1.etl видите там два других файла с расширением ETL, это может означать, что утилита еще работает, над их объединением в один – подождите несколько минут. При отсутствии изменений выполните в командной строке
xperf –stop
и перезагрузите систему. После чего попробуйте заново запустить сбор данных.
Примечание. Если в результате сбоя у вас продолжают записываться отчеты после каждой перезагрузки, выполните:
xbootmgr -remove
Анализируемые файлы и первый взгляд на этапы загрузки
Для анализа используются два файла: ETL и создаваемый из него XML.
ETL
Я думаю, что вы уже успели дважды щелкнуть файл boot_BASE+CSWITCH+DRIVERS+POWER_1.etl и полюбоваться красивыми графиками и диаграммами. В левой панели графики можно отображать и скрывать, а также переходить к ним двойным щелчком мыши.
В WPA из ADK для Windows 10 сводку этапов загрузки можно получить так. Из меню Profiles — Apply — Browse Catalog выберите FullBoot.Boot.wpaprofile. При этом автоматически открывается несколько вкладок с подборками сведений. Для отображения информации на отдельной вкладке из левой панели выберите Regions of interest — FullBoot. Получите такую диаграмму и таблицу.
В ADK для Windows 7 базовый график Boot Phases был доступен сразу
XML
Для удаленной диагностики по почте или в форуме можно создать текстовый отчет в виде XML-файла. Выполните команды:
cd c:trace xperf /tti -i boot_BASE+CSWITCH+DRIVERS+POWER_1.etl -o summary_boot.xml -a boot
Первая переходит в папку с логами, а вторая — создает требуемый XML-файл. Для его просмотра отлично подойдет Internet Explorer!
Увеличить рисунок
Сложите узлы, как показано на рисунке, чтобы лучше видеть общую картину. В узле timing указано время в миллисекундах, и там можно увидеть длительность двух больших, условно говоря, частей загрузки (выделены зеленым):
- bootDoneViaExplorer – время загрузки операционной системы вплоть до появления рабочего стола, в данном примере 37 секунд
- bootDoneViaPostBoot – полное время загрузки системы, рабочего стола и всех программ в автозагрузке, в данном примере 64 секунды (из этой цифры следует вычесть 10 секунд, в течение которых определяется полное бездействие системы)
Время первой части складывается из основных этапов загрузки операционной системы (обведены синим), вплоть до начала загрузки рабочего стола. В уже знакомом вам событии 100 журнала Diagnostics-Performance длительность этого этапа записывается в параметре MainPathBootTime.
Разница между этими двумя частями – это время от начала загрузки рабочего стола, до его полной готовности. В событии 100 журнала Diagnostics-Performance — это BootPostBootTime.
Для анализа загрузки нужно представлять, не только в какой последовательности эти этапы идут, но и что происходит на каждом из них. К сожалению, официальная документация по этому вопросу существует только на английском и достаточно сложна технически. Далее я предлагаю вам выдержки из этого документа в своем изложении, с дополнениями и в сопровождении собственных примеров диагностики.
На рисунке ниже представлены три основных этапа загрузки, причем главный из них состоит из четырех фаз.
Увеличить рисунок
Давайте рассмотрим все этапы подробно.
Этап OSLoader
Этап OSLoader следует сразу после инициализации BIOS. Визуально он начинается после заставки и диагностических экранов BIOS, а заканчивается примерно с появлением экрана «Загрузка Windows».
На этапе OSLoader:
- загрузчик Windows (winload.exe) загружает основные системные драйверы, которые необходимы для считывания минимально необходимого набора данных с диска
- затем загрузчик инициализирует систему до момента, с которого становится возможной загрузка ядра
- когда ядро начинает загружаться, winload.exe помещает в оперативную память системный раздел реестра и дополнительные драйверы, помеченные в качестве BOOT_START
Длительность этапа отражает значение параметра osLoaderDuration в узле timing XML-файла. Обычно, она в находится в пределах 2-3 секунд.
Этап MainPathBoot
Визуально этап MainPathBoot начинается с экрана «Загрузка Windows» и завершается при появлении рабочего стола. Если не настроен автоматический вход в систему, длительность этого этапа увеличивается за счет времени, которое требуется для ввода пароля.
Во время этапа MainPathBoot происходит основная работа по загрузке операционной системы:
- инициализируется ядро
- происходит определение устройств Plug and Play (PnP)
- запускаются службы
- выполняется вход в систему
- инициализируется Explorer, т.е. система готовится к загрузке рабочего стола
Этап состоит из четырех фаз, каждая из которых обладает собственными характеристиками и может по-своему влиять на длительность загрузки системы.
Фаза PreSMSS
Визуально фаза PreSMSS начинается примерно с экрана «Загрузка Windows», но ее окончание невозможно определить на глаз.
Фаза PreSMSS (в графическом представлении WPT она обозначена как Pre Session Init) начинается с инициализации ядра. Во время нее:
- ядро инициализирует структуры данных и компоненты, а затем запускает диспетчер PnP
- диспетчер PnP в свою очередь инициализирует драйверы BOOT_START, которые были загружены с помощью winload.exe на этапе OSLoader
- когда диспетчер PnP обнаруживает устройство, он загружает необходимый драйвер и выполняет его инициализацию
Диагностика
Если фаза занимает много времени, ищите в XML-файле в узле <PNP> драйвер, который долго загружается. Диагностику в графическом режиме я покажу на примере следующей фазы.
Фаза SMSSInit
Визуально начало фазы SMSSInit невозможно определить. Ее частью является пустой экран, который отображается между заставкой и экраном входа в систему, чье появление сигнализирует о завершении фазы.
Фаза SMSSInit (в графическом представлении WPT она обозначена как Session Init) начинается с того, что ядро передает контроль диспетчеру сессий (smss.exe). Во время этой фазы система:
- инициализирует реестр
- загружает и запускает устройства и вторую волну драйверов, которые не помечены как BOOT_START
- запускает процессы подсистемы
Фаза завершается с передачей контроля процессу winlogon.exe.
Диагностика
Наиболее распространенной причиной задержек в этой фазе являются драйвер видеокарты. Он инициализируется сначала во время системной сессии, а затем во время пользовательской. При этом инициализация во время пользовательской сессии занимает меньше времени, потому что в течение системной параллельно выполняется запуск других задач.
Сократив время запуска драйвера видеокарты, можно уменьшить длительность загрузки системы. Таким образом, если фаза SMSSInit затягивается, обновите драйвер видеокарты.
Более точную диагностику можно провести с помощью summary_boot.xml, где в узле PNP есть длительность запуска каждого драйвера. Впрочем, в Windows 10 он иногда отсутствует, и я не знаю, от чего это зависит и как это форсировать.
⚠ Показанного ниже графика Driver Delays в WPT больше нет, но во времена Windows 7 его можно было анализировать примерно так:
- На графике Boot Phases выделите фазу Session Init и выберите из контекстного меню команду Clone Selection. Выбранный период будет выделен на всех активных графиках.
- На графике Driver Delays щелкните правой кнопкой мыши и выберите из меню команду Set Delay Threshold. Она позволяет отфильтровать драйверы по времени задержки. Введите, например 2000, чтобы отобразить драйверы, загружавшиеся дольше двух секунд.
Увеличить рисунок
Вы увидите все драйверы, загружавшиеся в фазе Session Init дольше заданного времени. У меня вся фаза занимает 6 секунд, и двухсекундная задержка драйверов является нормальной. Но если у вас проблемы в этой фазе, с помощью фильтра вы сразу увидите, какой драйвер их вызывает.
Фаза WinLogonInit
Визуально фаза WinLogonInit начинается перед появлением экрана приветствия, а завершается перед появлением рабочего стола.
Фаза WinLogonInit начинается сразу после запуска winlogon.exe. Во время этой фазы:
- отображается экран приветствия
- диспетчер управления службами запускает сервисы
- происходит запуск сценариев групповой политики
Фаза завершается запуском оболочки Windows — процесса explorer.exe.
Диагностика
Во время фазы WinLogonInit выполняется множество параллельных операций. На многих системах она характеризуется нагрузкой на процессор и большим количеством операций ввода-вывода (I/O). Длительность фазы во многом зависит от поведения служб.
Чтобы обеспечить плавную загрузку системы, службы могут объявлять зависимости или использовать порядковые группы загрузки. Windows обрабатывает группы загрузки в последовательном порядке. Поэтому задержка даже одной службы в ранней группе может затягивать загрузку следующей группы служб и тормозить весь процесс загрузки.
Для выявления проблемной службы удобнее всего использовать графические возможности WPT. Откройте ETL-файл двойным щелчком мыши и прокрутите отчеты вниз до графика запуска служб.
Увеличить рисунок
Зачастую проблема вызвана не системными, а сторонними службами. На рисунке хорошо видно, что среди автоматически стартующих служб дольше всего загружаются три:
- Apache 2.2
- MySQL
- TeamViewer
При этом Apache блокирует загрузку следующей группы служб (очевидно, в ее отсутствие это сделала бы служба TeamViewer). Поскольку ни одна из этих служб не является системной, проблему легко решить. Можно в оснастке «Службы» изменить тип ее запуска на отложенный и посмотреть, будет ли она быстрее запускаться на более позднем этапе. Если это не дает эффекта, можно вовсе отключить службу и запускать ее вручную при необходимости. Во второй волне служб, имеющих отложенный тип запуска, видна задержка WSearch, отвечающей за поиск Windows, но я не стал ее трогать пока.
Чтобы увидеть время запуска каждой службы, щелкните точку начала запуска и растяните диапазон до ее конца. Для изменения масштаба графика крутите колесо мыши, удерживая нажатой клавишу CTRL.
Отключение трех вышеперечисленных служб позволило сократить общее время загрузки почти на 40 секунд! Обратите внимание, что группа автоматического запуска служб теперь стартовала намного быстрее (смотреть нужно относительно шкалы времени, т.к. масштаб графиков разный).
Wsearch все равно запускается дольше других служб, но уже всего 8 секунд вместо 30, что не дает мне достаточно оснований к ней придираться.
Если задержку вызывает антивирусная программа, отложенный запуск службы может понизить уровень защиты, а ручной запуск или отключение службы могут нарушить работу программы. В этом случае можно лишь посоветовать обновить антивирус до последней версии. Если это не дает эффекта, вам придется сделать выбор между любимой программой и длительностью загрузки.
Фаза ExplorerInit
Визуально фаза ExplorerInit начинается перед загрузкой рабочего стола, но ее окончание определить на глаз невозможно.
В фазе ExplorerInit:
- сначала запускается процесс explorer.exe
- затем система создает процесс диспетчера окон рабочего стола (DWM)
- DWM инициализирует рабочий стол и отображает его
Инциализация DWM и рабочего стола происходит на переднем плане, но в это же время в фоне диспетчер управления службами (SCM) запускает службы, а диспетчер памяти кеширует данные. Поэтому на многих системах эта фаза сопровождается нагрузкой на процессор, и нередко задержки при загрузке на этом этапе можно отнести на счет слабости аппаратных ресурсов.
Диагностика
В течение фазы ExplorerInit ресурсы процессора могут потреблять программы, работающие в качестве служб (например, защитные программы или серверы приложений). Они запускаются либо в этой фазе, либо продолжают свою загрузку, будучи запущенными в более ранних фазах. С другой стороны, некоторые службы (например, с отложенным запуском) могут быть еще не запущены на момент окончания фазы ExplorerInit.
Этап PostBoot
Этап PostBoot начинается после появления рабочего стола и завершается после того, как будет определено бездействие системы.
На этапе PostBoot рабочий стол уже загружен, и с ним можно взаимодействовать. Но при этом параллельно в фоне выполняется различная активность. Например, продолжается запуск служб и программ автозагрузки, что может сопровождаться появлением их значков в области уведомлений.
Средства WPT определяют бездействие системы по следующему алгоритму. Каждые 100 мс проверяется наличие активности в системе. Если бездействие системы составляет не менее 80% (за исключением низкоприоритетных процессов и дисковой активности), считается, что в этом интервале система бездействует. Проверка продолжается до тех пор, пока не наберется 10 секунд бездействия. Поэтому, определяя общее время загрузки системы, вычитайте из значения bootDoneViaPostBoot 10000 мс, т.е. 10 секунд.
Диагностика
На этапе PostBoot запускаются приложения, находящиеся в автозагрузке. Чтобы сократить длительность этого этапа, нужно навести там порядок. В графическом представлении WPT используйте график Process Lifetimes, чтобы увидеть все процессы, которые запускаются или продолжают запуск на данном этапе.
Безусловно, диагностика загрузки с помощью WPT требует навыка, и с наскоку разобраться в этом вопросе непросто. Но от вас и не требуется профессиональных знаний, поскольку текстовый отчет в XML файле вкупе с полным графическим представлением всех этапов загрузки позволяет быстро определить причину задержек при запуске Windows. Мне будет очень интересно узнать, полезна ли эта статья, помогла ли она выявить и устранить задержки с помощью WPT, а также насколько ускорилась загрузка системы в результате.
Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…
Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Конкретных и общеприменимых советов по оптимизации работы ОС быть не может точно так же как не может быть конкретных советов по ускорению работы любой случайно взятой программы. Точно так же как и в отдельных программах, работа всей системы может быть серьезно замедлена из-за одного-двух на первый взгляд незначительных мест. Для нахождения подобных «бутылочных горлышек» в программах существуют инструменты, называемые профайлерами. Нет ничего странного, что для нахождения «бутылочных горлышек» в операционной системе мы тоже будем использовать профайлер (никаких кавычек — это действительно профайлер причем одновременно и sampled и instrumented). С недавних пор WPA Tools распространяются в составе Windows SDK. Ставить полный SDK совершенно необязательно. Можно установить только «Windows Performance Toolkit»:
Собирать трейсы будем при помощи xbootmgr. Из магии используется только автологгер, включающий сбор ETW трейсов начиная с самого winload. Для вызова справки можно ввести xbootmgr -help — приводить ее здесь я не буду. Для желающих оценить масштаб можно ввести xperf -providers (или logman providers). Каждый провайдер имеет несколько «ключевых слов» (keywords), каждое «ключевое слово» включает/выключает несколько типов событий (event).
Итак начнем. Осторожно, следующая команда автоматически перегружает компьютер: xbootmgr -trace boot
После перезагрузки в каталоге, в котором эта команда была выполнена останется файл «boot_BASE+CSWITCH_1.etl» (BASE+CSWITCH это те самые «ключевые слова»): xperf boot_BASE+CSWITCH_1.etl
И можно начинать просмотр. Увиденное навевает печаль:
Explorer готов к 36-й секунде, но из-за 100% загрузки единственного (не особо быстрого) диска, система еще 2 минуты будет не очень отзывчивой (меню пуск будет открываться мгновенно, а вот с запуском программ придется подождать). ReadyBoot пытается чего то сделать и сначала у него даже получается (оранжевое и зеленое), но постепенно накапливающиеся отклонения от бутплана сводят его попытки на нет.
Что еще печальнее, так это то, что вместо собственно чтения данных, большую часть своей стопроцентной занятости диск проводит в метаниях головки к центру диска и обратно:
Небольшая справка: ReadyBoot собирает профиль использования диска при каждой загрузке и потом сервис SysMain строит бутплан на основании пяти последних загрузок. Соответственно, чем чаще загружаетесь, тем лучше будет «угадан» бутплан на следующую загрузку и тем быстрее она будет. Помимо этого, префетчер собирает статистику о том, какие файлы и в каком порядке были использованы во время загрузки и складывает эту информацию в %SystemRoot%PrefetchLayout.ini
Эту информацию использует встроенный дефрагментатор для принятия решений о размещении файлов.
Соответственно первой «оптимизацией» будет многократная перезагрузка и дефрагментация. Очень удобно, что xbootmgr может сделать это за нас.
xbootmgr -trace boot -prepSystem
По умолчанию выполняется шесть перезагрузок:
После второй начинается дефрагментация:
Когда все закончится, в каталоге, из которого был запущен xbootmgr останется 6 файлов с трейсами каждой из подготовительных перезагрузок а также все тот же boot_BASE+CSWITCH_1.etl
Смотрим, изменилось ли чего нибудь. А все изменилось довольно заметно:
ReadyBoot справляется со своей задачей значительно лучше и как следствие эксплорер готов на треть быстрее, а время активности диска сократилось почти вдвое.
Мы все еще ходим в центр диска и этим мы займемся позже, но disk seek-ов уже заметно меньше, и это уже какой никакой, а успех. Пока же, обратим внимание на такой график:
Это же безобразие. Пока кто то выкладывается на 100%, некоторые отдыхают. Будем исправлять. Как обычно разменивают процессоное время на размер читаемых данных? Правильно, компрессией. Исправлять будем сжатием папок Windows и обоих Program Files-ов. Попытку сделать это из загруженной системы нельзя назвать успешной — какие то файлы пакуются, какие то нет. В общем так жить нельзя:
Перегружаемся в System Recovery и выполняем оттуда compact /c /a /i /s: каталог для наших трех каталогов. Скриншотов не будет, так как мне было сильно лень делать скриншотилку для WinPE — придется поверить на слово (а лучше перепроверить экспериментально). prepSystem придется провести еще раз, так как layout диска после сжатия сильно поменялся.
Ну и проверяем, чего у нас вышло-то:
Эксплорер готов к 20-й секунде, еще чуть меньше минуты идет дисковая активность, но уже чуть меньше 100%.
И да, мы все еще ходим в центр диска:
Тултипы подсказывают нам виновника. Перепроверям
Заодно под раздачу попадают скайп и стим. И правильно — нечего им делать в автозагрузке с такими аппетитами. Их всегда можно запустить из супербара/старт меню.
Последние штрихи:
Совершенно невменяемое время загрузки одного сервиса:
И второго:
Мы договорились не отказываться от функционала, даже если он нам на фиг не уперся. Поэтому отключать сервисы мы не будем. Мы просто переключим их в «Automatic (Delayed start)»:
В случае с Microsoft Antimalware все несколько сложнее:
Достаточно быстро выясняем, что дело в том, что сервис относится к группе «COM Infrastructure» и не может быть загружен позже этой группы. Идем в реестр и вытаскиваем его из этой группы, после чего спокойно доделываем дело:
На всякий случай еще один prepSystem и вот финал:
Эксплорер загрузился на 17-й секунде, на 18-й фактически прекращается дисковая активность.
Можно полюбоваться на строго упорядоченный доступ к диску:
Быстрый SSD и/или тотальное вырезание функционала могло бы сократить время загрузки до десяти секунд и меньше.
А вывод из всего этого такой: прежде чем что либо «оптимизировать», стоит определить те минимальные изменения, которые возымеют максимальный результат.