Categories: windows

Ускорение загрузки Windows одним твиком реестра

Можно ускорить загрузку Windows, изменив всего один параметр в реестре! Стоп… звучит слишком хорошо, чтобы быть правдой, не так ли? Однако это возможно, потому что когда-то Microsoft решила повоевать за автозагрузку с разработчиками программ. Я нарисовал для вас полную картину работы твика, чтобы ваши ожидания от него соответствовали действительности.

Что входит в понятие «автозагрузка»

Для автоматического запуска программ и скриптов в Windows, как правило, используются:

  • разделы реестра Run:
    1
    2
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  • папка «Автозагрузка», которую можно открыть командой shell – shell:startup
  • задания планировщика и скрипты групповой политики, выполняющиеся при входе пользователя в систему

Программы из первых двух пунктов этого списка можно увидеть в утилите msconfig, а полную картину даетAutoruns.


Увеличить рисунок

Вы можете узнать больше об автозагрузке из материалов моих коллег (1 и 2), а я продолжу свой рассказ.

[+] Сегодня в программе

Влияние программ в автозагрузке на скорость запуска Windows

Из моей книги об ускорении загрузки Windows вы можете узнать технические подробности o порядке загрузки системы, поэтому сейчас я предлагаю взглянуть на ситуацию проще. Систему можно считать полностью загрузившейся, когда с рабочим столом или начальным экраном Windows 8 можно свободно взаимодействовать. Это значит, что система моментально откликается на запуск программ или вызов контекстных меню.

Если отбросить время, требуемое на загрузку драйверов, а также системных и сторонних служб, то программы в автозапуске становятся основным фактором, влияющим на длительность загрузки системы.

Многие программы стремятся прописаться в автозагрузку сразу при установке, а иногда это происходит без вашего ведома.


Увеличить рисунок

Доводилось видеть такую картину?  Вряд ли у вас все так запущено, но у кого-нибудь из друзей, знакомых или родственников – вполне может быть. Все это тормозит загрузку системы!

Microsoft против разработчиков программ

Нет, Microsoft, конечно, не против разработчиков программ, ибо Windows без приложений никому не нужна. Однако Microsoft не радует, что разработчики пихают свои программы в автозагрузку. Потому что пока они стартуют, в том числе и в фоне, мы не можем нормально запускать те программы, которые нам действительно нужны. Но при этом принято говорить, что Windows долго запускается, не так ли?

Создатели Windows Vista, видимо, чувствовали, что ОС получается тяжеловатой, в том числе и в плане загрузки системы. Поэтому в Microsoft решили уменьшить негативный эффект от программ в автозагрузке и сделать рабочий стол доступным немного быстрее.

Форсирование нормального приоритета потока для программ в автозагрузке

Поток (thread) является частью процесса и может выполняться с разным приоритетом. Потокам с высоким приоритетом требуется больше ресурсов, чем их коллегам с обычным или низким приоритетом.

В Windows Vista для размещенных в автозагрузке программ зафиксировали приоритет потока (thread priority) на обычном уровне (Normal) и заблокировали любые попытки повысить его. Эти ограничения действовали на протяжении некоторого периода времени после запуска системы (подробности чуть ниже).

Логика создателей Windows Vista была такова, что если этого не сделать, некоторые разработчики будут стремиться повысить приоритет своих программ, чтобы растолкать локтями тех, кто этого не сделал. Поэтому все программы в автозагрузке поставили в равные условия.

Понижение приоритета CPU и I/O для программ в автозагрузке

Все программы в автозагрузке Windows Vista поместили в «коробку» (“box”, в терминологии Performance Team, отвечающей за производительность системы).

На практике это означало, что по умолчанию на протяжении 60 секунд после запуска системы для всех приложений в автозагрузке задавался приоритет:

  • CPU ниже обычного (below normal), чтобы уменьшить нагрузку на процессор
  • I/O очень низкий (very low), чтобы снизить интенсивность обращений к диску

Таким образом, каждая программа в автозагрузке меньше нагружала систему во время ее запуска. А по истечении заданного периода времени приоритет программы восстанавливался на уровень, определенный ее создателями.

Чем кончилась война

Microsoft закопала топор войны за автозагрузку с выходом Windows 7. Трудно сказать, что послужило основной причиной. Возможно, было много нареканий от корпоративных клиентов, недовольных медленным выполнением скриптов групповой политики.

С другой стороны, за три года, прошедших с выпуска Windows Vista, улучшились аппаратные конфигурации компьютеров на рынке. Появились новые, более мощные процессоры, а твердотельные накопители стали проникать в массы. Это снизило полезный эффект от помещения в коробку автоматически запускаемых программ.

Так или иначе, в Windows 7 и Windows 8 приоритет CPU и I/O для программ в автозагрузке не понижается, а возможность увеличить приоритет потока не блокируется. Однако топор войны не утоплен, а именно закопан! И ниже я расскажу, как его выкопать.

В каких случаях изменение в реестре ускорит загрузку системы

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

  • много программ в автозагрузке
  • слабый процессор
  • медленный жесткий диск (например, 5400 rpm)

Таким образом, ускорение будет заметно на глаз на нетбуке или слабом ноутбуке с двумя-тремя десятками программ в автозагрузке.

Если же у вас четырехъядерный процессор, SSD диск и минимум программ в автозапуске, вы вряд ли заметите ускорение загрузки (но возможен эффект плацебо 🙂

Параметр реестра, изменяющий приоритет CPU и I/O для программ в автозагрузке

Описанные выше возможности остались в Windows 7 и Windows 8. Их просто отключили, изменив низкоприоритетный период с 60 секунд до 0. Вы можете установить любой интервал по своему усмотрению!

  1. Перейдите в раздел реестра:
    1
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DelayedApps
  2. Станьте владельцем этого раздела (по умолчанию им владеет системная учетная запись TrustedInstaller).
  3. Задайте желаемое значение для параметра Delay_Sec в секундах (в десятичном формате). Например, установите 120 секунд.
  4. Верните исходного владельца раздела реестра, как описано по ссылке в шаге 2.

Вот и все! Теперь на протяжении заданного интервала времени программы из автозагрузки будут иметь низкий приоритет CPU и I/O.

Как проверить приоритет запущенных программ

С помощью утилиты Process Explorer вы можете быстро посмотреть, с каким приоритетом запущены процессы.

  1. Щелкните правой кнопкой мыши на любом столбце и выберите Select Columns.
  2. На вкладке Process Performance установите флажок Base Priority (в списке процессов заголовок столбца называется Priority).
  3. На вкладке Process I/O установите флажок Priority.

На рисунке вы видите программы, отсортированные по приоритету CPU.

У процессов от AcroRd32.exe до wmplayer.exe:

  • приоритет I/O очень низкий (Very Low)
  • приоритет CPU ниже обычного (6)

Обычный приоритет CPU имеет значение 8, в чем можно убедиться, щелкнув правой кнопкой мыши по процессу и выбрав в меню пункт Set Priority.

По истечении заданного интервала времени вы увидите, что приоритет процессов вернулся в нормальное русло.

Тест

Материал был бы неполным без подтверждения теории практикой. К сожалению счастью, у меня все системы относительно быстрые (так, во всех в качестве системного диска используется SSD), а в автозагрузке чистота и порядок.

Самым слабым оказался ноутбук мамы, где установлен процессор Core 2 Duo и жесткий диск 7200 rpm. В автозагрузке находились:

  • Google Updater
  • драйверы Synaptics и Realtek, а также какая-то утилита Toshiba
  • графический интерфейс антивируса Microsoft Security Essentials

Поэтому перегруженный автозапуск программ тоже пришлось эмулировать, и я добавил туда:

  • браузеры IE, Chrome и Firefox
  • Microsoft Office Word и Excel
  • Adobe Reader, Windows Media Player и Skype

Поскольку состав программ в автозапуске изменился, нужно было обеспечить чистоту эксперимента:

  1. Сделать три контрольных перезагрузки для тренировки ReadyBoot.
  2. Дефрагментировать загрузочные файлы.

Затем я выполнил по 5 перезагрузок системы в обычном режиме и с включенным ограничением приоритета (время в миллисекундах взято из события 100).

НОМЕР ЗАПУСКА ОБЫЧНАЯ АВТОЗАГРУЗКА АВТОЗАГРУЗКА С
ОГРАНИЧЕННЫМ ПРИОРИТЕТОМ
1 66754 62025
2 64380 59823
3 69242 63399
4 60904 59787
5 72725 60839
Среднее 66801 61175

Как видите, среднее время пяти загрузок составило 66,8 с при обычной автозагрузке против 61,2 с при ограниченном приоритете программ в автозапуске. Другими словами, в протестированной конфигурации железа и программ  среднее время готовности рабочего стола сократилось на 9%, благодаря внесенному в реестр изменению.

А у вас ускорилась загрузка?

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

Пожалуйста, поделитесь результатами в комментариях, дополнив их сведениями о:

Ускорение загрузки Windows одним твиком реестра

admin

Recent Posts

How to back up and restore the ESXi host configuration

Original https://kb.vmware.com/s/article/2042141 Backing up ESXi host configuration data To synchronize the configuration changed with persistent…

11 месяцев ago

vCenter Converter Standalone download

vCenter Converter Standalone 6.6.0 download (далее…)

12 месяцев ago

VMware remote console (VMRC) 12 download

VMware remote console (VMRC) 12.0.5 download Last version: VMware Remote Console 12.0.5  28 NOV 2023…

2 года ago

Mysql calculate row size for all tables

SELECT col_sizes.TABLE_SCHEMA, col_sizes.TABLE_NAME, SUM(col_sizes.col_size) AS EST_MAX_ROW_SIZE FROM ( SELECT cols.TABLE_SCHEMA, cols.TABLE_NAME, cols.COLUMN_NAME, CASE cols.DATA_TYPE WHEN…

2 года ago

Mysql change date format in database

UPDATE DB SET column = DATE(STR_TO_DATE(column, '%Y-%d-%m')) WHERE DATE(STR_TO_DATE(column, '%d-%m-%Y')) <> '0000-00-00'

2 года ago

esxi debian lvm extend partition

echo 1 > /sys/class/block/sda/device/rescan #maybe run under root> sudo fdisk /dev/sda2 > d > 2…

2 года ago