Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Интересные программы и советы. Оптимизация загрузки Windows.


Рассылка блога Интересные программы

Оптимизация загрузки Windows 

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

  1. Загрузка NTLDR и основных файлов, выбор конфигурации.
  2. Загрузка ядра, инициализация устройств, загрузка драйверов.
  3. Инициализация подсистем, запуск LSASS и WINLOGON.
  4. Запуск оболочки (EXPLORER), служб и дополнительных программ.
Между пунктами 3 и 4 отображается окно входа в систему, а пользователь вводит пароль. Любой системный программист меня за такое описание запрезирает, но я ведь не для них пишу, правда? Самое главное, что необходимо понять из приведенного выше списка - что с жесткого диска в память считывается масса данных, причем чтение осуществляется не последовательно а, так сказать, "из разных концов диска" - откуда требуется, оттуда и грузим. На это уходит львиная доля времени загрузки. Но так было в Windows 2000. Разработчики XP внедрили два средства повышения скорости загрузки, про которые многие забывают.
Первое называется prefetching - упреждающее чтение. В основу этого способа лег тот факт, что процесс загрузки происходит каждый раз примерно одинаково. Система пытается определить этот порядок, чтобы за одно обращение к диску считать не только требуемый в настоящий момент блок данных, но и данные, которые понадобятся на более поздних этапах. Свои наблюдения за загрузкой Windows помещает в папку %windir%\Prefetch, создавая свой профильный файл для каждого приложения и службы, а итог своих наблюдений располагает в файле layout.ini.
По умолчанию prefetching в Windows включен, так можно по этому поводу не беспокоиться. Если же вы имели несчастье пользоваться всякими "твикерами", то стоит проверить: параметр в реестре HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\EnablePrefetcher должен иметь значение 3.
Второе средство борьбы со временем загрузки - BootDefrag - дефрагментация для ускорения загрузки. Суть такова - расположить на диске файлы, требуемые при загрузке, так, чтобы время доступа к ним было минимально. Дефрагментация происходит автоматически, если после загрузки Windows пользователь не совершал никаких действий в течение минут этак 20. Про это мало кто из непродвинутых пользователей знает, поэтому преполезнейшая эта возможность остается невостребованной. Проверить, прошла ли дефрагментация, можно по ключу HKLM\Software\Microsoft\Dfrg\BootOptimizeFunction\OptimizeComplete. Если ключ равен "Yes", стало быть, дефрагментация имела место.
Теперь немного практики. Все приведенные ниже действия буду работать, если не отключена служба планировщика заданий. Запустим упомянутую уже программу Bootvis, и выберем в меню Trace пункт Next Boot. Компьютер автоматически перезагрузится, и через некоторое время после окончания загрузки запустится Bootvis и отобразит протокол загрузки. Маркер в виде палки с квадратом на конце отмечает время окончания запуска оболочки - это и будем считать временем окончания загрузки. В моем случае после первого использования Bootvis это время составляло 36 секунд.
Теперь выбираем пункт Optimize System в меню Trace. Снова произойдет перезагрузка, после которой будет принудительно запущен механизм BootDefrag. Затем нужно снова запустить трассировку из Bootvis, выбрав Next Trace. На этот раз мой результат составил 26 секунд. Неплохо, да?
Продолжим изыскания. Некоторые авторитетные для меня источники утверждали, что упреждающее чтение в некоторых ситуациях не увеличивает производительность, а уменьшает ее! Посему я решил отключить prefetching и по новой выполнить загрузочную дефрагментацию. Вот что я сделал (не торопитесь делать то же самое):
  1. Удалил файл %windir%\Prefetch\ntosboot-b00dfaad.pf - это профиль загрузки.
  2. Упомянутый выше ключ EnablePrefetcher установил в 0.
  3. В ветке HKLM\Software\Microsoft\Dfrg\BootOptimizeFunction установил ключи LcnStartLocation и LcnEndLocation равными 0, а OptimizeComplete - "No".
  4. Принудительно запустил загрузочную дефрагментацию командой defrag c: -boot (здесь "c" - имя раздела, с которого происходит загрузка). Дефрагментация заняла пару минут, после чего ключи LcnStartLocation и LcnEndLocation получили новые значения, а OptimizeComplete стал "Yes".
  5. Перезагрузился через Bootvis. Получил 27 секунд.

Как видим, манипуляции ничего не дали - стало только хуже (слегка). По-моему, этот хак работал только до выхода SP2.
Итак, я вернул EnablePrefetcher=3 и два раза перезагрузился, получив, соответветственно, 25 и 24 секунды. Мораль: Prefetching можно не отключать, зато иногда полезно запустить дефрагментацию.
AutoRunsТеперь, когда мы более-менее справились с оптимизацией качественной, самое время приступать к оптимизации количественной. А именно - избавиться от ненужных служб и программ, которые запускаются при загрузке, но совершенно нам не нужны и только тратят драгоценное время.
Я мог бы долго и нудно рассказывать, где прячутся автозагружаемые приложения и компоненты, но сам воспользовался для этого (и всем рекомендую) бесплатной программкой AutoRuns от Sysinternals (спасибо aumakua). Итого: я получил 23 секунды загрузки. Это время можно еще уменьшить, автоматизировав (ценой безопасности) вход в систему, но это отдельный разговор.

Ссылка на статью 



В рассылку попадают не все статьи блога. Чтобы ничего не упустить и быть в курсе новых поступлений, посетите сам блог или подпишитесь на RSS-ленту.


В избранное