На этом уроке рассмотрим две технологии, которые ускоряют запуск часто используемых приложений и служб Windows. Это Предвыборка и Cупервыборка.
Подкачка по требованию
Windows использует алгоритм подкачки, который называется «Подкачка по требованию«. Это означает что при старте процесса в память загружаются не все данные, а только те, которые нужны для начала его работы.
Когда процесс только начинает работать, не все необходимые ему данные успевают подгрузиться в его рабочий набор. Процесс при этом получает много ошибок страниц (page fault). Когда процесс получает ошибку страницы, диспетчер памяти загружает нужную страницу в его рабочий набор, а в месте с ней ещё несколько страниц. Подгрузка дополнительных страниц вместе с основой призвана уменьшить нагрузку на дисковую подсистему.
Но все равно такая стратегия замедляет запуск приложений и служб Windows. С таким замедлением призваны бороться две технологии диспетчера памяти: Предвыборка и Cупервыборка.
Супервыборка
За супервыборку отвечает служба SysMain (ранее называлась SuperFetch). Она анализирует две вещи. Во-первых, какие приложения используются чаще всего. И во-вторых, к каким данным эти приложения обращаются чаще всего. Эти данные заранее помещаются в оперативную память (cache) для более быстрого доступа к ним.
Супервыборка может ускорить работу системы увеличив потребление оперативной памяти. Кроме этого, супервыборка способна продлить срок службы жестких дисков, так как на них уменьшается нагрузка. Помимо всего прочего служба SysMain сжимает и объединяет страницы памяти, повышая производительность системы в целом.
В итоге SuperFetch существенно увеличивает быстродействие системы и установленных программ. Поэтому отключать этот компонент настоятельно не рекомендуется.
Предвыборка
Предвыборка (PreFetcher) анализирует все запускаемые приложения в течении 10 секунд (при запуске). При этом запоминается какие файлы и данные загружались в оперативную память.
Когда процесс стартует, он постепенно подгружает необходимые ему данные. При этом несколько страниц памяти могут загрузиться из одного файла, затем несколько из другого, затем еще несколько из первого, и так далее.
Предвыборка анализирует какие страницы загружались и из каких файлов. А при следующем запуске этого приложения все необходимые ему данные разом загрузятся в оперативную память. Это уменьшит нагрузку на жёсткий диск и ускорит запуск приложения.
Отключить или включить PreFetcher можно редактируя параметр реестра:
Компьютер\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\EnablePrefetcher 0x00000000 — компонент отключен 0x00000001 — ускорение запуска приложений 0x00000002 — ускорение загрузки системы 0x00000003 — ускорение запуска приложений и загрузки системы
Файлы PreFetcher хранятся в каталоге C:\Windows\Prefetch и имеют расширения pf:
Имена таких файлов состоят из имени приложения и хеша приложения.
SuperFetch также создает в этом каталоге файл Layout.ini:
В нем хранится список файлов и каталогов в том порядке, в котором они используются в ходе начальной загрузки системы или запуска приложений. Также в этом списке находятся файлы, к которым происходят частые обращения.