Ускорение загрузки Windows XP
Теория и практика

Не любит «хардкорный» пользователь персонального компьютера ждать. Хочется ему, чтобы стоящая на рабочем столе крайне дорогая его сердцу и кошельку железяка работала минимум, как суперкомпьютер из Лос-Аламоса, и мгновенно отзывалась на все его действия. Моделирование ядерной зимы его, конечно, не интересует, а вот пошмалять по приятелям из базуки в самом навороченном спинномозговом «шутере» — святое дело. Процессор бы помощнее — я б их точно всех… И грезит он днём и ночью об очередном апгрейде — являются ему валяющийся на дороге бесхозный чемодан, набитый зелёными «буказоидами» и неожиданное наследство от давшей дуба пятиюродной бабушки троюродного дяди. Ах, Pentium 4, мечта поэта! Ах, гигабайт оперативки! Ах, «Гыфорс» 3! Слюнки по всей физиономии потоками растекаются. Пока же в ожидании манны небесной BIOS изучен вдоль и поперёк, разогнано всё, вплоть до вентиляторов и флопповодов, а при взгляде на холодильник на лице рождается коварная ухмылка: этот бы компрессор, да в дело пустить, Celeron охлаждать… Шестьдесят кадров в секунду в «Кваке» уже не котируются — подавай ему все сто! Дефрагментация жёсткого диска после очередного «сноса» разложившейся Windows так ни разу и не была проведена, поскольку потратить на это дело лишних 30-40 минут просто кощунство — ведь за это время можно пройти пару уровней Max Payne! На самом видном месте разложены ярлыки к программам, предназначенным для ускорения работы ОС — всяческим TweakUI, WinBoost, TweakDUN и прочим. Правда, последний раз именно эксперименты с ними и привели к скоропостижной кончине Windows, но зато теперь драйвер системного устройства «Руки юзера» глючит гораздо меньше. Но больше всего раздражает, что, несмотря на все усилия по разгону, каждый раз при включении ПК надо ждать, пока он загрузится — ну что за фигня, почти по минуте сидеть без дела приходится, теребя в руке джойстик! Так и неврастеником стать недолго!!! На скорость загрузки системы никакими настройками и хитростями заметно повлиять практически не удаётся. Спасает от дурдома только режим StandBy — из него машина просыпается всего за несколько секунд, которые хоть и с трудом, но пережить всё же можно. Но ведь не каждый же раз им можно пользоваться — «Винда» без перезагрузки очень быстро становится неуправляемой, да и страшновато оставлять надолго и без присмотра включённый в нашу отечественную сеть агрегат, который, можно сказать, является единственной радостью в жизни. Нет счастья в этом мире, короче говоря…

Это, конечно, крайний случай, и основная масса пользователей более терпелива, но, тем не менее, медлительность Windows 2000 в своё время стала одной из причин непопулярности у домашнего пользователя этой, довольно надёжной ОС. И дело не только в повышенной требовательности к ресурсам системы — с этим ещё можно было как-то справиться, прикупив побольше памяти. Особенно неприятен был чрезмерно долгий процесс её загрузки и выключения — на вполне современных компьютерах порой приходилось ждать появления Рабочего Стола по полторы минуты! И это притом, что Windows 98 загружалась максимум секунд за тридцать, а «Миллениум», из которого почти выкорчевали DOS-составляющую — и того быстрее. Разумеется, если бы преемник Windows 2000 был столь же вялым при загрузке, это стало бы серьёзным фактором, препятствующим давно задуманному Microsoft переводу на платформу NT избалованных стремительностью и лёгкостью Windows 9x домашних пользователей. А ведь ставка разработчиками Windows XP делалась главным образом на них — именно эта категория потребителей способна сегодня принести корпорации наибольшие дивиденды. И именно домашний пользователь придаёт большое значение скорости работы самой ОС вообще и быстроте её загрузки в частности. На рабочем месте, в принципе, не так важно — десять секунд надо ждать появления кнопки «Пуск» или три минуты: солдат спит, служба идёт. Тем более что потратить эти несколько минут на загрузку системы нужно всего раз или два в день. А вот дома, когда нетерпеливому подростку хочется после школы поскорее залезть в Интернет, пока родители не пришли и не увидели, что он там высматривает, тут уже каждая секунда на счету. И чтобы не распугать простых пользователей долгими утомительными загрузками, создатели Windows XP постарались на славу — впервые одним из приоритетных направлений при создании ОС было именно сокращение времени, необходимого на запуск системы, а также на вывод её из режимов StandBy и Hybernate.

Теория

При создании Windows XP была поставлена задача добиться на типичном домашнем десктопе таких показателей:

  • Выход из режима Standby (S3) — не более 5 секунд.
  • Выход из режима Hibernate (S4) — не более 20 секунд.
  • Обычная загрузка до рабочего состояния — не более 30 секунд.

Разумеется, без отдельных исключений обойтись невозможно, это разработчиками признавалось сразу, например, должны грузиться чуть медленнее ПК с дисками сверхвысокой ёмкости, с некоторыми SCSI-адаптерами, с RD-Ram, памятью ECC или с локализованной для использования иероглифов ОС, но среднестатистический ПК с Windows XP никак не должен проигрывать по этому показателю системам семейства 9x. Собственно говоря, всё это оказалось сегодня осуществимо на более-менее современных компьютерах благодаря внедрению в жизнь требований технологий OnNow [1] и ACPI [2]. А вот что конкретно было сделано, и удалось ли задуманное Microsoft или нет, мы и попробуем разобраться.

Ход полной загрузки Windows XP можно условно разделить на четыре этапа:

  1. Загрузка основных файлов ОС с диска в память.
  2. Инициализация устройств.
  3. Регистрация пользователя (Winlogon), старт системных служб и оболочки Explorer.
  4. Загрузка дополнительного программного обеспечения.

Поскольку набор автоматически загружаемых на старте системы программ на каждом ПК разный, то за завершение загрузки непосредственно операционной системы логичнее считать окончание загрузки её оболочки — Проводника, когда на экране появляется Рабочий Стол. Поэтому за точки отсчёта при измерении времени были приняты момент нажатия кнопки Power и момент появления ярлыков на Рабочем Столе. Если рассмотреть более детально получившийся в итоге серьёзных усовершенствований ход загрузки Windows XP, то для условно-среднего ПК состоит она из нескольких процессов, часть которых протекает параллельно:

  1. Начальная инициализация (в частности дисков) — в Windows XP составляет около 2 секунд против 8 в Windows 2000.
  2. Инициализация драйверов устройств — зависит от конкретной системы, порядка 4 секунд
  3. Новинка Windows XP — упреждающее чтение «Prefetching», при котором с диска заранее считываются ещё незатребованные данные, осуществляется параллельно с инициализацией устройств — около 6 секунд.
  4. Инициализация реестра и файла подкачки — ещё пара секунд.
  5. Инициализация видео системы и установка нужного разрешения экрана — тоже порядка пары секунд.
  6. Регистрация пользователя и запуск служб — около 8 секунд.
  7. Старт оболочки Explorer — 2 секунды.

Как видите, в идеале должно получаться не более 20-30 секунд, что вполне сравнимо со временем загрузки гораздо более простых систем Windows 9x. А всё за счёт того, что в Windows XP ускорение происходит буквально на всех этапах загрузки благодаря таким приёмам, как упреждающее чтение данных, параллельная инициализация устройств, параллельное выполнение различных этапов загрузки, отложенный запуск ряда служб, исключение ряда компонентов из процесса загрузки, объединение некоторых сервисов в один общий процесс, да и при регистрации пользователя более не требуется обязательное завершение инициализации сети, а обращение к сетевым ресурсам при загрузке сведено до минимума. Кроме того, Windows XP поддерживает спецификацию Simple Boot Flag [3], благодаря которой автоматически сокращается время, необходимое BIOS для проведения процедуры самотестирования POST в случае, если предыдущая загрузка ОС была успешной. Улучшен системный загрузчик NTLDR, который теперь умеет кэшировать данные о файлах и директориях, чтобы сократить обращения к диску при загрузке. Это приводит к четырёхкратному ускорению его работы по сравнению с Windows 2000. Причём, если на ПК установлено две ОС — Windows 2000 и Windows XP, то этот эффект (но только этот — связанный с усовершенствованием NTLDR) коснётся и «винтукея», так как его загрузчик будет переписан более продвинутым. Кстати, благодаря новым особенностям NTLDR ускорился и выход системы из спящего режима. Ну и, кроме того, имеется ряд мелких доработок, например, ускорена инициализация реестра, уменьшено время на поиск PS/2-клавиатур, а если у вас имеется сетевая карта, не подключённая к сети, то это обстоятельство также более не будет вызывать задержек загрузки. Вообще говоря, оптимизирована работа управления питанием во многих аспектах, в частности, улучшена работа спящего режима Hibernation — теперь в файл-образ оперативной памяти не сбрасываются пустые страницы, алгоритм его компрессии улучшен, при записи на диск файла HYBERFIL.SYS используется режим DMA, а запись на диск и компрессия идут параллельными процессами. Обновлён алгоритм оповещения устройств и приложений об изменении режима электропитания. В результате ускорена не только обычная загрузка, но и пробуждение ПК из спящего и ждущего режимов.

Но особого внимания заслуживает ключевой режим упреждающего чтения Prefetching. В предыдущих системах во время загрузки при инициализации драйверов, загрузке сервисов и оболочки данные с диска в память загружались последовательно, по мере поступления запросов на них. Теперь же Windows XP параллельно с выполнением других операций заранее считывает эти данные, не дожидаясь запроса, что приводит к самому значительному эффекту. Этот интеллектуальный алгоритм упреждающего чтения применяется и к запуску программ — после первого запуска каждой программы создаются специальные сценарии их загрузки — они хранятся в папке \WINNT\prefetch, в которых описано, какие файлы нужно заранее поместить в память. Эти же файлы, вернее, их некий общий знаменатель — файл \WINNT\prefetch\layout.ini используется затем дефрагментатором для оптимизации расположения файлов на диске, что ещё больше сокращает время загрузки. Кстати, вы можете сами проверить, насколько эффективен этот механизм применительно к загрузке ОС — отключить Prefetching можно, установив в разделе реестра

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control \Session Manager\Memory Management\PrefetchParameters

параметр EnablePrefetcher равным 0.

Непосредственно же сам протокол загрузки ОС фиксируется в файле %windir%\prefetch\notosboot-B00DFAAD.pf, который для большей объективности содержит сведения о последних 8 запусках ОС и обновляется каждый раз спустя 1 минуту после загрузки системы (мониторинг завершается через 10 секунд после начала загрузки оболочки Explorer, так что под него попадают и некоторые автозагружаемые программы). Если его удалить, то следующая загрузка не будет использовать упреждающее чтение и вы, скорее всего, обнаружите, что система грузится почти в два раза медленнее.

Но и это ещё не всё. В Windows XP появилась новая функция BootDefrag или BootOptimize, суть которой заключается в следующем. Поскольку дефрагментация и оптимизация расположения на диске файлов, нужных системе во время загрузки, решающим образом влияет на весь процесс загрузки ОС, а пользователю часто лениво самому запускать дефрагментатор, то система теперь умеет сама, без участия оператора оптимизировать эти файлы, причём не как ей вздумается, а основываясь на данных всё тех же файлов notosboot-B00DFAAD.pf и layout.ini. Правда, происходит автоматическая дефрагментация при простое системы, если пользователь 10-30 минут после загрузки ОС не производил никаких операций. А потому может случиться так, что на вашей интенсивно используемой системе файлы окажутся не оптимизированы. Проверить, произошла ли оптимизация, можно заглянув в реестр — если в разделе

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction

стоит параметр "OptimizeComplete"="Yes", то дефрагментация была произведена. Если же этого пока не случилось, то просто перезагрузите ПК и оставьте его минут на тридцать в одиночестве — Windows сама всё сделает, и ускорение следующей загрузки будет заметно даже на глаз. Обратите только внимание, что перед оптимизацией надо, чтобы ПК со свежеустановленной ОС имел в своём багаже хотя бы три перезагрузки для накопления нужных данных. Штатный дефрагментатор Windows XP не отменяет эту оптимизацию, так что пользоваться им можно без опаски. Если же вы сомневаетесь, работает ли вообще у вас эта функция, или хотите её отключить, то проверьте в реестре наличие параметра, включающего BootDefrag:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction
"Enable"="Y"

В принципе, если система уже однажды оптимизирована, и файлы на диске расположены должным образом, то вряд ли есть смысл оставлять эту функцию и дальше работающей — её отключение может ещё немного ускорить загрузку.

Практика

Но, к сожалению, желаемое не всегда соответствует действительному. В том, что Microsoft гордо отрапортует о своих новых победах, никто и не сомневался. Для того же, чтобы выяснить, как обстоят дела в реальности, на вполне конкретных компьютерах, а не на абстрактных системах из тестовых лабораторий в Редмонде, придётся самолично вооружиться секундомером и небольшой утилиткой, позволяющей максимально объективно измерять время загрузки системы и по результатам мониторинга принудительно проводить оптимизацию загрузочных файлов — BootVis [4]. Утилита эта примечательна во всех отношениях и вызвала своим недавним появлением настоящий фурор в некоторых сетевых конференциях. Во всех новостях утверждалось, что после её использования система начинает грузиться на 30, а то и на все 50% быстрее. Но о том, насколько это справедливо, мы ещё поговорим, пока же нас интересует её работа в части мониторинга загрузки ОС. Помимо того, что BootVis очень наглядным образом показывает, сколько и на какой этап загрузки системы уходит времени (например, параллелизм выполнения этих этапов на её графиках наблюдается более чем отчётливо), она умеет отображать график загрузки центрального процессора при старте системы, график дисковых операций ввода-вывода, график задержек при загрузке драйверов и ещё ряд данных, полезных не только для удовлетворения собственного любопытства, но и для выяснения причин заторов системы во время её загрузки. Аналогичная информация выводится и для режимов StandBy и Hibernate — на временной шкале прекрасно прослеживается весь процесс засыпания и пробуждения компьютера. Сведения, которые выводит программа, кстати говоря, не ограничиваются лишь графиками — ещё более детальную информацию по каждому этапу загрузки ОС можно получить, если воспользоваться контекстным меню, появляющимся при щелчке правой кнопкой мыши на том или ином участке графика.

Пользоваться программой очень легко, да и инсталляции она не требует — достаточно распаковать скачанный архив в любую удобную папку или даже прямо на Рабочий Стол. После её запуска в меню «Trace» вы увидите четыре команды:

  • Next Boot
  • Next Boot with Driver Delays
  • Next Standby/Resume
  • Next Hibernate/Resume

Это режимы тестирования, которые предлагает BootVis. Учтите только, что при тестировании времени перехода в спящий режим и возврата из него вне контроля BootVis остаётся считывание файла HYBERFIL.SYS, в котором сохранено содержимое оперативной памяти, так что без секундомера всё-таки не обойтись. Для нашего же случая определения времени загрузки Windows нужно выбрать режим «Next Boot», после чего программа перезагрузит систему и сразу после старта ПК начнёт отслеживать процесс запуска ОС. Как только Windows полностью загрузится, на дисплее автоматически появится окно BootVis со всей собранной ей информацией. Единственное условие её успешной работы заключается в том, что нельзя выключать Планировщик Заданий, иначе программа не сможет сама запуститься.

Итак, на тестовый ноутбук SONY VAIO FX101 (Celeron 600, 128 Mb, 10 Gb UDMA66), на котором «Миллениум» загружается секунд за 20, была установлена вторая система — Windows XP (раздел FAT32). Для начала отложим BootVis в сторонку, и измерения будем производить исключительно секундомером, дабы не было риска их исказить каким-то влиянием BootVis. Самая первая загрузка Windows XP оказалась и самой долгой — помимо того, что система никак пока не оптимизирована, во время первого её запуска ещё имеет место и куча всяких глупостей типа рекламного тура по Windows XP. Заняла она чуть меньше минуты, что сразу напомнило сонную Windows 2000. К слову сказать, самая первая загрузка не подвергается мониторингу со стороны ОС и не учитывается при последующей оптимизации, поскольку из-за своих особенностей не является типичной. Далее одна за другой было произведено несколько перезагрузок ОС и получен неплохо повторяющийся, а значит объективный результат — около 40 секунд нужно для запуска не оптимизированной Windows XP на реальном и не очень отставшем от жизни ПК. Это, конечно, раза в два хуже, чем у Windows Me, но улучшения по отношению к Windows 2000 уже заметны, хотя до заявленных Microsoft 30 секунд новая система пока явно не дотягивает.

Теперь, чтобы сработала функция BootDefrag, попробуем сразу же после загрузки оставить систему в бездействии минут на 30. Именно этого и не делают многие пользователи, не знакомые с особенностями Windows XP, из-за чего их система в течение долгого времени не показывает всех своих возможностей. И действительно — минут через 20 простоя сама по себе возникает некая дисковая активность, очень похожая на процесс дефрагментации, которая длится минут 5. Посмотрим, что получилось — перезагружаем ПК, и оказывается, что Рабочий Стол появляется на экране уже через 27-28 секунд! Вот они, новые технологии в действии! Не исключаю, что благодаря им на некоторых ПК Windows XP станет грузиться даже быстрее Windows Me. Так что можно с определённостью сказать, что Microsoft на этот раз не обманула и выполнила свои обещания — система загружается очень даже шустро.

Посмотрим далее, какой эффект даст применение столь воодушевлённо встреченной широкой публикой утилиты BootVis. Сначала проведём обычный мониторинг загрузки, чтобы выяснить, насколько её данные совпадают с тем, что показывает наш секундомер. После нескольких тестов получаем среднее время загрузки ОС, равное 25 секундам — это на две секунды меньше итогов ручного метода, что, в общем, не так критично и можно списать на погрешности измерения и небольшое расхождение точек отсчёта. Главное — результат, стабильно повторяющийся от загрузки к загрузке, и можно переходить к самому интересному эксперименту — разрешить BootVis оптимизировать систему для получения обещанного 30%-го прироста скорости загрузки. Наши 25 секунд должны после этого чудесным образом превратиться в 15, что не просто круто, а очень круто даже для Windows Me! В меню Trace выбираем пункт «Optimize System» и в течение нескольких томительных минут ожидания наблюдаем, как после перезагрузки программа упорно шуршит жёстким диском, перемещая файлы по своим хитрым алгоритмам. Когда процесс дефрагментации завершается, снова запускаем мониторинг времени загрузки в BootVis, перезагружаем ПК и смотрим, что же получилось… А получились всё те же 25 секунд… Где же обещанные 30 и 50%??? Эффекта-то от программы никакого! А всё дело в том, что наша тестовая система уже один раз сама себя оптимизировала — разница между 40 секундами и 27 как раз и составляет те самые 30%, и больше тут уже сделать практически ничего нельзя. По крайней мере, изменения после действий BootVis слишком незначительны, чтобы быть достойными упоминания. Слухи же о чудодейственных возможностях BootVis, видимо, пошли от тех товарищей, которые столь активно используют свой ПК, что у Windows нет ни минуты свободного времени на проведение дефрагментации загрузочных файлов. Так что, больших надежд на эту программу возлагать не стоит — механизмы, заложенные в Windows XP, и без неё прекрасно справляются с оптимизацией процесса загрузки, надо только после очередного включения ПК дать системе полчаса отдыха. BootVis же лишь делает всё то же самое, но по запросу пользователя, в удобное для него время. Главное же достоинство этой программы заключается в том, что после её применения не становится хуже, так что попробовать её можно, если есть желание ради призрачной надежды качать 325 килобайт.

Рекомендации по ускорению загрузки

Параллельно с серьёзным усовершенствованием операционной системы в части управления питанием и загрузки, Microsoft даёт рекомендации и пользователям предпринять со своей стороны ряд усилий для того, чтобы помочь Windows XP проявить себя во всей красе. Почитать сами первоисточники по этой теме вы сможете на сайте www.microsoft.com/hwdev/fastboot/ [5]. Правда, всё это отнюдь не означает, что рекомендации, подходящие к ускорению загрузки ОС, столь же благотворно скажутся на всём остальном процессе общения с Windows, например, использование NTFS не всегда оказывается оправдано на домашних системах, а пользоваться диском, имеющим всего один раздел, крайне неудобно, но, тем не менее, Microsoft советует:

  • Использовать файловую систему NTFS — она, в отличие от FAT32, не требует помещения целой FAT в память при загрузке, что заметно на дисках более 8 ГБ.
  • Использовать только один раздел на диске.
  • Не использовать конвертацию FAT32 в NTFS после установки ОС — удалить все разделы FAT ещё до установки ОС и разрешить ей создать файловую систему NTFS во время инсталляции.
  • Установить жёсткий диск в качестве первого загрузочного устройства.
  • Использовать все настройки CMOS Setup, позволяющие сократить время загрузки и проведения POST.
  • Отключить логотипы, которые часто зашиты в системный BIOS и BIOS видеокарты.
  • Отключить в CMOS Setup поиск устройств на не занятых IDE-каналах.
  • Иметь последнюю версию BIOS для вашей материнской платы с поддержкой функции Simple Boot Flag и обновлённый BIOS видеокарты.
  • Желателен быстрый диск — от 7200RPM, имеющий большой буфер.
  • Необходим достаточный объём оперативной памяти — от 128 мегабайт.
  • Необходим современный процессор.
  • Убедитесь, что дефрагментация загрузочных файлов функцией BootDefrag была произведена, и попробуйте использовать утилиту Bootvis.exe — возможно, на вашей системе она всё же добьётся более глубокой оптимизации.
  • Сократите число автозагружаемых программ и системных служб.
  • Не используйте обои Рабочего Стола и прочие декоративные «прибамбасы».

Но даже воспользовавшись этими советами, вы, скорее всего, уже не получите большого прироста скорости загрузки, так, например, на моём тестовом ноутбуке отключение ряда ненужных сервисов и удаление абсолютно всех программ из автозагрузки дало выигрыш менее секунды, что, конечно же, на общем фоне смотрится очень даже бледно. В целом же, как мы убедились — прогресс в благородном семействе Windows NT налицо, жаль только, что обладатели более привычной для многих Windows Me не могут воспользоваться для оптимизации своей системы утилитой такого же плана, что и BootVis. Насколько мне известно, максимум, что им может помочь в борьбе за секунды — анализ протокола загрузки ОС с помощью программы Boot Log Analyzer [6] и небольшая утилита от той же Microsoft — Devview [7], которая показывает, какое устройство сколько времени требует для своей инициализации при загрузке системы. Лично я после анализа собранных ею данных отключил ненужные мне COM и LPT порты на своём ПК, но выигрыш от этой операции составил всего около секунды.




Темы