Содержание
Prefetcher — компонент операционной системы Microsoft Windows, ускоряющий процесс её начальной загрузки, а также сокращающий время запуска программ. Prefetcher впервые появился в операционной системе Windows XP. Начиная с Windows Vista, он был дополнен технологиями SuperFetch и ReadyBoost.
Содержание
Описание [ править | править код ]
Запуск Windows и приложений сопровождается чтением в память и обработкой огромного количества файлов. Зачастую один и тот же файл открывается по несколько раз для чтения различных сегментов. Такой нерациональный доступ к файлам занимает много времени. Гораздо эффективнее обращаться к каждому файлу только один раз, загружая информацию в оперативную память ещё до того, как она станет нужна программам. Prefetcher наблюдает за тем, какой код и данные (включая NTFS Master File Table) загружаются в процессе запуска операционной системы и приложений. Он накапливает эти сведения в файлах трассировки для оптимизации загрузки кода и данных при следующих запусках.
Prefetcher наблюдает за запуском каждого приложения в течение первых 10 секунд. Наблюдение за процессом загрузки системы ограничено по времени и прекращается в следующих случаях [1] :
- по истечении 30 секунд с момента запуска пользовательской оболочки
- по истечении 60 секунд с момента завершения инициализации всех служб
- по истечении 120 секунд с момента начала загрузки системы
Файлы трассировки сохраняются в папке Prefetch корневого каталога Windows [2] (обычно C:WINDOWSPrefetch ). Загрузка операционной системы трассируется в файл NTOSBOOT-B00DFAAD.pf . Запуск программ трассируется в отдельные файлы, имена которых состоят из названия исполняемого файла запускаемой программы, дефиса, шестнадцатеричного хеша пути к исполняемому файлу и расширения «.pf» (например: EXPLORER.EXE-082F38A9.pf ). При запуске приложений, являющихся рабочей средой для других компонентов (например: DLLHOST.EXE , MMC.EXE , RUNDLL32.EXE ), в хеш также добавляется имя загружаемого модуля, в итоге для разных компонентов создаются разные файлы трассировки (например: MMC.EXE-0B0171A2.pf , MMC.EXE-393F4B82.pf ).
Важную роль в работе компонента Prefetcher играет служба «Планировщик заданий» (англ. Task Scheduler ). «Планировщик заданий» анализирует данные, поступающие от Prefetcher, и записывает файлы трассировки в папку %SystemRoot%Prefetch . Если служба не запущена, Prefetcher не будет работать правильно. «Планировщик заданий» также взаимодействует с программой дефрагментации диска Windows. Каждые три дня во время простоя компьютера в папке %SystemRoot%Prefetch создается файл Layout.ini , в котором сохраняется список файлов и папок, использовавшихся при загрузке операционной системы и запуске программ. Дефрагментатор диска использует информацию из файла Layout.ini для оптимального физического размещения этих файлов на диске.
Настройка [ править | править код ]
Параметры Prefetcher хранятся в системном реестре в разделе HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory ManagementPrefetchParameters [3] . Параметр EnablePrefetcher (DWORD) может принимать одно из следующих значений:
- 0x00000000 — компонент отключен
- 0x00000001 — ускорение запуска приложений
- 0x00000002 — ускорение загрузки системы
- 0x00000003 — ускорение запуска приложений и загрузки системы
Изменение параметра EnablePrefetcher вступает в действие немедленно.
Файл предварительной выборки системной, начальной загрузки расположен в каталоге %SystemRoot%Prefetch и путь к нему задан именно этим параметром.
Значение по умолчанию = Prefetch
Мифы [ править | править код ]
Существует несколько распространенных мифов о Prefetcher:
- Добавление ключа «/prefetch:1» в строку запуска приложения ускоряет его загрузку. Этот миф основывается на том факте, что после установки операционной системы в строке запуска Windows Media Player изначально указан ключ «/prefetch:1». В реальности добавление этого ключа само по себе не дает никакого эффекта, а в некоторых случаях приложение может отказаться запускаться совсем [4] .
- Удаление файлов из папки %SystemRoot%Prefetch ускоряет работу компьютера. Этот миф основывается на предположении, что в папке %SystemRoot%Prefetch скапливается слишком много файлов, поэтому Prefetcher начинает «тормозить» систему. В реальности очистка вышеуказанной папки приводит к замедлению работы компьютера до тех пор, пока трассировочные данные не будут снова накоплены [4] .
- Со временем папка %SystemRoot%Prefetch начинает занимать много места на диске. В целях экономии дискового пространства максимальное количество трассировочных файлов ограничено 128 [4] . Очистка папки %SystemRoot%Prefetch не требуется, так как Prefetcher обслуживает себя автоматически без участия со стороны пользователя [2] .
Навигация
Официальный сайт Superfetch
Новости
22 октября, 2018
По просьбе пользователей, мы описали основные причины: Почему зависает или тормозит компьютер, и что с ним делать?
16 октября, 2018
Мы выпустили вторую версию программы superfetch.exe. Теперь можно отключить: SuperFetch, Prefetch, ReadyBoot, это возможно существенно ускорит скорость работы Вашего компьютера!
28 Сентября, 2018
Мы выпустили первую версию программы superfetch 1.00 для быстрого включения/отключения superfetch.
Ждем Ваших отзывов и предложений!
Что такое prefetch и почему его отключают?
Изначально служба prefetch разрабатывалась как отдельный компонент ОС Windows (начиная с ОС Windows XP) для ускорения запуска системы и приложений. Все это было в далеком 2001 году. Представляете конфигурацию компьютеров в те времена?
Теперь вернемся в наш 2018 год.
Проблема кэширования данных уже давно решена на аппаратном уровне и заложена в любой жесткий диск с магнитным накопителем. Где для кэширования данных есть собственная память, объем которой рассчитывается исходя из скорости вращения диска, чтобы соответсвовать максимальной пропускной способности для интерфейсов подключения (IDE, далее SATA и прочие).
Почему надо отключать эту службу? Служба prefetch (в списке служб она называется prefetcher) наблюдает за запуском приложений и создает файлы трассировки оптимизации кода. Эта сложная структура кэша исполняемого кода, которая собирается ограниченное время (10 секунд после запуска) и подставляется в память при повторном запуске приложений. Отключают эту службу потому, что время потраченное на создание трассировки, намного больше, чем время и скорость считывания данных с современных жестких дисков. Тем более появились более быстрые SSD диски.
Microsoft в принудительном порядке отключает prefetch на собственных планшетах линейки Surface.
Так как, это обусловлено экономией места на накопителях и увеличением производительности системы! Почему Microsoft не дает возможность отключать самостоятельно prefetch — загадка, скорей всего это делается в маркетинговых целях.
Некоторые пользователи, любящие порыться в системных каталогах, зачастую сталкиваются с директорией Prefetch. Что за папка перед юзером в данном случае, знают далеко не все. Попробуем восполнить пробелы в знаниях насчет того, для чего нужен этот каталог и какие данные он содержит.
Prefetch: что за папка
Рассмотрение вопроса начнем с подачи теоретического материала. При старте операционная система отслеживает процесс загрузки, сохраняя о нем все данные для ускорения последующего запуска в каталоге Prefetch. Что за папка перед нами?
По сути, это директория на жестком диске компьютера, содержащая актуальные данные, параметры и компоненты полного цикла загрузки системы и запуска наиболее часто используемых программ.
Чтобы в следующий раз не загружать все компоненты с нуля, Windows и использует данные, сохраненные на винчестере. Некоторые юзеры, правда, утверждают, что для каждого последующего запуска системы информация, хранящаяся в каталоге Prefetch, становится устаревшей. Поэтому, с их точки зрения, время от времени нужно очищать директорию Prefetch. Что за папка Prefetch, немного понятно. А вот далеко не все любители очистки знают, что данные в ней перезаписываются автоматически после каждого старта или запуска приложения.
Посмотрим на практические стороны вопроса об удалении ее содержимого. Чуть позже будет сказано о том, как отключить использование функции ускорения загрузки, если это кому-то уж слишком сильно мешает.
Папка Prefetch в Windows 7 и выше: стоит ли ее очищать
Удаление данных из этого каталога никаких критических изменений в работе системы или установленных программ не вызовет.
Но вот абсолютно неправы все те, кто утверждает, что после удаления информации из этого каталога загрузка системы и запуск приложений станет быстрее. Как раз наоборот, ведь системе или программе придется заново запускать собственные модули, помещая их в оперативную или виртуальную память компьютерного устройства, а это занимает время. Использование данных директории Prefetch затрачиваемое на эти процессы время сокращает существенно. Поэтому очисткой по большому счету заниматься нежелательно, тем более — удалять саму папку.
Тут важно понимать, что при последующих загрузках данные о процессе все равно будут сохранены. Так что очистка и удаление окажутся тем, что принято называть «сизифов труд».
Управление содержимым каталога Prefetch
Если уж кому-то не нужна эта служба, от нее можно избавиться. Для этого следует войти в редактор системного реестра (команда regedit в меню «Выполнить», вызываемом сочетанием Win + R).
Здесь нужно выбрать ветку HKLM, а затем через системный каталог (SYSTEM) и настройки текущих параметров контроля (CurrentControlSet) спуститься до раздела инспектирования памяти, где и находится искомый каталог PrefetchParameters. В нем содержатся ключи формата 0x0000000z, где «z» может принимать четыре варианта значений:
- 0 – полное отключение;
- 1 – ускорение только запуска программ;
- 2 – оптимизация только загрузки Windows;
- 3 – задействование функции в полном объеме (и для системы, и для приложений).
Те же настройки можно произвести и в редакторе групповых политик или в инструментарии администрирования компьютера.
Остается добавить, что каталог располагается в системном разделе по пути Windows/Prefetch. Что за папка и для чего она нужна, думается, уже понятно. Если дать небольшой совет напоследок, лучше не заниматься очисткой содержимого каталога или изменением параметров службы, установленных в системе по умолчанию.