Prefetcher: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
'''Prefetcher''' — компонент операционной системы [[Microsoft Windows]], ускоряющий процесс ее начальной [[Процесс запуска Windows NT|загрузки]], а также сокращающий время запуска программ. Prefetcher впервые появился в операционной системе [[Windows XP]]. Начиная с [[Windows Vista]], он был расширен технологиями [[SuperFetch]] и [[ReadyBoost]].
'''Prefetcher''' — компонент операционной системы [[Microsoft Windows]], ускоряющий процесс ее начальной [[Процесс запуска Windows NT|загрузки]], а также сокращающий время запуска программ. Prefetcher впервые появился в операционной системе [[Windows XP]]. Начиная с [[Windows Vista]], он был дополнен технологиями [[SuperFetch]] и [[ReadyBoost]].


== Описание ==
== Описание ==
Запуск Windows и приложений сопровождается чтением в память и обработкой огромного количества файлов. Зачастую один и тот же файл открывается по несколько раз для чтения различных сегментов. Такой нерациональный доступ к файлам занимает много времени. Гораздо эффективнее обращаться к каждому файлу только один раз, загружая информацию в оперативную память еще до того, как она может понадобиться программам. Prefetcher наблюдает за тем, какой [[Машинный код|код]] и данные (включая [[Master File Table|NTFS Master File Table]]) загружаются в процессе запуска операционной системы и приложений. Он накапливает эти сведения в файлах трассировки для оптимизации загрузки кода и данных при следующих запусках.
Запуск Windows и приложений сопровождается чтением в память и обработкой огромного количества файлов. Зачастую один и тот же файл открывается по несколько раз для чтения различных сегментов. Такой нерациональный доступ к файлам занимает много времени. Гораздо эффективнее обращаться к каждому файлу только один раз, загружая информацию в оперативную память еще до того, как она станет нужна программам. Prefetcher наблюдает за тем, какой [[Машинный код|код]] и данные (включая [[Master File Table|NTFS Master File Table]]) загружаются в процессе запуска операционной системы и приложений. Он накапливает эти сведения в файлах трассировки для оптимизации загрузки кода и данных при следующих запусках.


Prefetcher наблюдает за запуском каждого приложения в течение первых 10 секунд. Наблюдение за процессом загрузки системы также имеет ограничение по времени и прекращается при наступлении одного из событий<ref>[http://windows.microsoft.com/en-US/windows-vista/What-is-the-prefetch-folder Windows XP: Kernel Improvements Create a More Robust, Powerful, and Scalable OS] — ''From the December 2001 issue of MSDN Magazine.''</ref>:
Prefetcher наблюдает за запуском каждого приложения в течение первых 10 секунд. Наблюдение за процессом загрузки системы ограничено по времени и прекращается при наступлении одного из событий<ref>[http://msdn.microsoft.com/en-us/magazine/cc302206.aspx Windows XP: Kernel Improvements Create a More Robust, Powerful, and Scalable OS] — ''From the December 2001 issue of MSDN Magazine.''</ref>:
* прошло 30 секунд с момента запуска [[Оболочка операционной системы|пользовательской оболочки]]
* прошло 30 секунд с момента запуска [[Оболочка операционной системы|пользовательской оболочки]]
* прошло 60 секунд с момента завершения инициализации всех [[Службы Windows|служб]]
* прошло 60 секунд с момента завершения инициализации всех [[Службы Windows|служб]]
* прошло 120 секунд с момента начала загрузки системы
* прошло 120 секунд с момента начала загрузки системы


Файлы трассировки сохраняются в папке Prefetch корневого каталога Windows<ref>[http://windows.microsoft.com/en-US/windows-vista/What-is-the-prefetch-folder What is the prefetch folder?] — ''Windows Vista Help.''</ref> (обычно, это папка <code>\Windows\Prefetch</code>). Загрузка операционной системы трассируется в файл <code>NTOSBOOT-B00DFAAD.pf</code>. Запуск программ трассируется в отдельные файлы, имена которых состоят из названия [[Исполняемый файл|исполняемого файла]] запускаемой программы, дефиса, [[Шестнадцатеричная система счисления|шестнадцатеричного]] [[Хеш-сумма|хеша]] [[Путь к файлу|пути]] к исполняемому файлу и расширения «.pf» (например: <code>EXPLORER.EXE-082F38A9.pf</code>). При запуске приложений, являющихся рабочей средой для других компонентов (например: <code>DLLHOST.EXE</code>, <code>[[Microsoft Management Console|MMC.EXE]]</code>, <code>RUNDLL32.EXE</code>), в хеш также добавляется имя загружаемого модуля, в итоге для разных компонентов создаются разные файлы трассировки.
Файлы трассировки сохраняются в папке Prefetch корневого каталога Windows<ref name="vista">[http://windows.microsoft.com/en-US/windows-vista/What-is-the-prefetch-folder What is the prefetch folder?] — ''Windows Vista Help.''</ref> (обычно это <code>C:\WINDOWS\Prefetch</code>). Загрузка операционной системы трассируется в файл <code>NTOSBOOT-B00DFAAD.pf</code>. Запуск программ трассируется в отдельные файлы, имена которых состоят из названия [[Исполняемый файл|исполняемого файла]] запускаемой программы, дефиса, [[Шестнадцатеричная система счисления|шестнадцатеричного]] [[Хеш-сумма|хеша]] [[Путь к файлу|пути]] к исполняемому файлу и расширения «.pf» (например: <code>EXPLORER.EXE-082F38A9.pf</code>). При запуске приложений, являющихся рабочей средой для других компонентов (например: <code>DLLHOST.EXE</code>, <code>[[Microsoft Management Console|MMC.EXE]]</code>, <code>RUNDLL32.EXE</code>), в хеш также добавляется имя загружаемого модуля, в итоге для разных компонентов создаются разные файлы трассировки.


Важную роль в работе компонента Prefetcher играет служба «[[Планировщик задач (сервис)|Планировщик заданий]]» ({{lang-en|Task Scheduler}}). «Планировщик заданий» анализирует данные, поступающие от Prefetcher, и записывает файлы трассировки в папку <code>%SystemRoot%\Prefetch</code>. Prefetcher не будет работать правильно, если служба не запущена. «Планировщик заданий» также взаимодействует с программой [[Дефрагментация диска (компонент Windows)|дефрагментации диска Windows]]. Каждые три дня во время простоя компьютера в папке <code>%SystemRoot%\Prefetch</code> создается файл <code>Layout.ini</code>, в котором сохраняется список файлов и папок, использовавшихся при загрузке операционной системы и запуске программ. Дефрагментатор диска использует информацию из файла <code>Layout.ini</code> для оптимального физического размещения этих файлов на диске.
Важную роль в работе компонента Prefetcher играет служба «[[Планировщик задач (сервис)|Планировщик заданий]]» ({{lang-en|Task Scheduler}}). «Планировщик заданий» анализирует данные, поступающие от Prefetcher, и записывает файлы трассировки в папку <code>%SystemRoot%\Prefetch</code>. Prefetcher не будет работать правильно, если служба не запущена. «Планировщик заданий» также взаимодействует с программой [[Дефрагментация диска (компонент Windows)|дефрагментации диска Windows]]. Каждые три дня во время простоя компьютера в папке <code>%SystemRoot%\Prefetch</code> создается файл <code>Layout.ini</code>, в котором сохраняется список файлов и папок, использовавшихся при загрузке операционной системы и запуске программ. Дефрагментатор диска использует информацию из файла <code>Layout.ini</code> для оптимального физического размещения этих файлов на диске.
Строка 16: Строка 16:


Параметры Prefetcher хранятся в [[Реестр Windows|системном реестре]] в разделе <code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters</code><ref>[http://www.microsoft.com/whdc/archive/XP_kernel.mspx#E3KAC Kernel Enhancements for Windows XP] — ''Windows Hardware Developer Central. 13 January, 2003.''</ref>. Параметр <code>EnablePrefetcher</code> ''(DWORD)'' может принимать одно из следующих значений:
Параметры Prefetcher хранятся в [[Реестр Windows|системном реестре]] в разделе <code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters</code><ref>[http://www.microsoft.com/whdc/archive/XP_kernel.mspx#E3KAC Kernel Enhancements for Windows XP] — ''Windows Hardware Developer Central. 13 January, 2003.''</ref>. Параметр <code>EnablePrefetcher</code> ''(DWORD)'' может принимать одно из следующих значений:
* 0x00000000 — ускорение отключено
* 0x00000000 — компонент отключен
* 0x00000001 — ускорение запуска приложений
* 0x00000001 — ускорение запуска приложений
* 0x00000002 — ускорение загрузки системы
* 0x00000002 — ускорение загрузки системы
Строка 24: Строка 24:
== Мифы и реальность ==
== Мифы и реальность ==


Существуют два самых распространенных '''мифа''' о Prefetcher:
Существуют несколько распространенных '''мифов''' о Prefetcher:


* ''Добавление ключа «/prefetch:1» в строку запуска приложения ускоряет его загрузку.''
* ''Добавление ключа «/prefetch:1» в строку запуска приложения ускоряет его загрузку.''
Строка 32: Строка 32:
* ''Удаление файлов из папки <code>%SystemRoot%\Prefetch</code> ускоряет работу компьютера.''
* ''Удаление файлов из папки <code>%SystemRoot%\Prefetch</code> ускоряет работу компьютера.''


Этот миф основывается на предположении, что в папке <code>%SystemRoot%\Prefetch</code> скапливается слишком много файлов, поэтому Prefetcher начинает «тормозить». В реальности очистка вышеуказанной папки приводит к замедлению работы компьютера до тех пор, пока трассировочные данные не будут снова накоплены<ref name="ryanmy" />.
Этот миф основывается на предположении, что в папке <code>%SystemRoot%\Prefetch</code> скапливается слишком много файлов, поэтому Prefetcher начинает «тормозить» систему. В реальности очистка вышеуказанной папки приводит к замедлению работы компьютера до тех пор, пока трассировочные данные не будут снова накоплены<ref name="ryanmy" />.

* ''Со временем папка <code>%SystemRoot%\Prefetch</code> начинает занимать много места на диске.''

В большинстве случаев это можно рассматривать как миф. В целях экономии дискового пространства максимальное количество трассировочных файлов ограничено 128<ref name="ryanmy" />. Очистка папки <code>%SystemRoot%\Prefetch</code> не требуется, так как Prefetcher обслуживает себя автоматически без участия со стороны пользователя<ref name="vista" />.


== Примечания ==
== Примечания ==

Версия от 10:05, 27 августа 2010

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:\WINDOWS\Prefetch). Загрузка операционной системы трассируется в файл NTOSBOOT-B00DFAAD.pf. Запуск программ трассируется в отдельные файлы, имена которых состоят из названия исполняемого файла запускаемой программы, дефиса, шестнадцатеричного хеша пути к исполняемому файлу и расширения «.pf» (например: EXPLORER.EXE-082F38A9.pf). При запуске приложений, являющихся рабочей средой для других компонентов (например: DLLHOST.EXE, MMC.EXE, RUNDLL32.EXE), в хеш также добавляется имя загружаемого модуля, в итоге для разных компонентов создаются разные файлы трассировки.

Важную роль в работе компонента Prefetcher играет служба «Планировщик заданий» (англ. Task Scheduler). «Планировщик заданий» анализирует данные, поступающие от Prefetcher, и записывает файлы трассировки в папку %SystemRoot%\Prefetch. Prefetcher не будет работать правильно, если служба не запущена. «Планировщик заданий» также взаимодействует с программой дефрагментации диска Windows. Каждые три дня во время простоя компьютера в папке %SystemRoot%\Prefetch создается файл Layout.ini, в котором сохраняется список файлов и папок, использовавшихся при загрузке операционной системы и запуске программ. Дефрагментатор диска использует информацию из файла Layout.ini для оптимального физического размещения этих файлов на диске.

Настройка

Параметры Prefetcher хранятся в системном реестре в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters[3]. Параметр EnablePrefetcher (DWORD) может принимать одно из следующих значений:

  • 0x00000000 — компонент отключен
  • 0x00000001 — ускорение запуска приложений
  • 0x00000002 — ускорение загрузки системы
  • 0x00000003 — ускорение запуска приложений и загрузки системы

Изменение параметра EnablePrefetcher вступает в действие немедленно.

Мифы и реальность

Существуют несколько распространенных мифов о Prefetcher:

  • Добавление ключа «/prefetch:1» в строку запуска приложения ускоряет его загрузку.

Этот миф основывается на том факте, что после установки операционной системы в строке запуска Windows Media Player изначально указан ключ «/prefetch:1». В реальности добавление этого ключа само по себе не дает никакого эффекта, а в некоторых случаях приложение может отказаться запускаться совсем[4].

  • Удаление файлов из папки %SystemRoot%\Prefetch ускоряет работу компьютера.

Этот миф основывается на предположении, что в папке %SystemRoot%\Prefetch скапливается слишком много файлов, поэтому Prefetcher начинает «тормозить» систему. В реальности очистка вышеуказанной папки приводит к замедлению работы компьютера до тех пор, пока трассировочные данные не будут снова накоплены[4].

  • Со временем папка %SystemRoot%\Prefetch начинает занимать много места на диске.

В большинстве случаев это можно рассматривать как миф. В целях экономии дискового пространства максимальное количество трассировочных файлов ограничено 128[4]. Очистка папки %SystemRoot%\Prefetch не требуется, так как Prefetcher обслуживает себя автоматически без участия со стороны пользователя[2].

Примечания

  1. Windows XP: Kernel Improvements Create a More Robust, Powerful, and Scalable OS — From the December 2001 issue of MSDN Magazine.
  2. 1 2 What is the prefetch folder? — Windows Vista Help.
  3. Kernel Enhancements for Windows XP — Windows Hardware Developer Central. 13 January, 2003.
  4. 1 2 3 Misinformation and the The Prefetch Flag — Funny, It Worked Last Time. MSDN Blogs. 25 May, 2005.

См. также

Ссылки