Prefetcher - Википедия - Prefetcher

В Prefetcher является составной частью Майкрософт Виндоус который был введен в Windows XP.[1] Это компонент Менеджер памяти что может ускорить работу Windows ботинок процесс и сократить время, необходимое для запуска программ. Это достигается путем кэширования файлов, которые необходимы приложению, в ОЗУ при запуске приложения, таким образом консолидируя чтение с диска и уменьшая количество обращений к диску. Эта функция защищена патентом США 6,633,968.[2][3]

С Виндоус виста, Prefetcher был расширен SuperFetch и ReadyBoost. SuperFetch пытается ускорить время запуска приложений, отслеживая и адаптируясь к шаблонам использования приложений в течение определенного периода времени, а также заранее кэшируя большинство файлов и данных, которые им необходимы, в памяти, чтобы к ним можно было получить очень быстрый доступ, когда это необходимо. ReadyBoost (если он включен) использует внешнюю память, например USB-накопитель, для расширения системного кеша за пределы объема оперативной памяти, установленной на компьютере. ReadyBoost также имеет компонент под названием ReadyBoot, который заменяет Prefetcher для процесса загрузки, если в системе 700 МБ или более ОЗУ.[4]

Обзор

Когда система Windows загружается, компоненты многих файлов должны быть считаны в память и обработаны. Часто разные части одного и того же файла (например, кусты реестра) загружаются в разное время. В результате значительное количество времени тратится на «прыжки» от файла к файлу и обратно несколько раз, даже если единичный доступ был бы более эффективным. Программа предварительной выборки работает, наблюдая, к каким данным осуществляется доступ во время процесса загрузки (включая данные, считанные из NTFS Таблица основных файлов ) и запись файла трассировки этого действия. Программа предварительной загрузки будет продолжать отслеживать такую ​​активность до 30 секунд после запуска оболочки пользователя, или до 60 секунд после завершения инициализации всех служб, или до 120 секунд после загрузки системы, в зависимости от того, что наступит раньше.

В дальнейшем при загрузке можно будет использовать информацию, записанную в этом файле трассировки, для более эффективной загрузки кода и данных (т. Е. Путем переупорядочения операций чтения с диска, чтобы минимизировать или исключить необходимость многократного доступа к одному и тому же файлу, что минимизирует перемещение головки диска).

Предварительная загрузка приложений работает аналогичным образом, но локализован для запуска отдельного приложения. Контролируются только первые 10 секунд активности.[1]:458

Программа предварительной выборки хранит свои файлы трассировки в папке «Предварительная выборка» внутри папки Windows (обычно C: Windows Prefetch). Имя файла трассировки загрузки всегда NTOSBOOT-B00DFAAD.PF, а файлы трассировки приложения представляют собой объединение имени исполняемого файла приложения, дефиса, шестнадцатеричного представления хеш-кода пути, в котором находится файл, и расширения «.pf». Приложения, в которых размещены другие компоненты (т.е. Консоль управления Microsoft или Dllhost) также включают имя загруженного компонента в вычисляемый хеш; в результате для каждого компонента создаются разные файлы трассировки.

Обратите внимание, что Планировщик заданий это процесс, ответственный за анализ данных трассировки, собранных программой предварительной выборки, и запись файлов в каталог предварительной выборки. В результате предварительная выборка не будет работать правильно, если служба планировщика заданий не запущена.

Чтобы еще больше сократить время доступа, планировщик задач вызывает Дефрагментатор диска Windows каждые три дня. Когда машина простаивает, обрабатываются списки файлов и каталогов, на которые ссылались во время процесса загрузки и запуска приложений.[1]:461–462 Обработанный результат сохраняется в Layout.ini в каталоге предварительной выборки, а затем передается в программу дефрагментации диска, давая указание переупорядочить эти файлы в последовательные позиции на физическом жестком диске.

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

Это изменение порядка можно запустить (запустив «Defrag.exe% systemdrive% -b» из командной строки) без выполнения полной дефрагментации.[нужна цитата ]

Если система установлена ​​на твердотельный накопитель, Superfetch отключен, но обычная предварительная выборка оставлена ​​включенной.[нужна цитата ]

Конфигурация

Конфигурация Prefetcher хранится в Реестр Windows в HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Control Session Manager Управление памятью PrefetchParameters. Значение EnablePrefetcher может быть одним из следующих:[5]

  • 0 = Отключено
  • 1 = Предварительная загрузка приложений включена
  • 2 = Предварительная загрузка при загрузке включена (по умолчанию только в Windows Server 2003).[6]
  • 3 = Предварительная загрузка приложений и загрузки включена (по умолчанию).[5]

Рекомендуемое значение 3.[5] Значения выше, чем 3 не увеличивайте производительность, и изменив значение на 2 не ускорит загрузку Windows.[5]

Некорректная настройка prefetcher

Часто можно найти в Интернете[7] твик приложения "/ prefetch: 1",[8] что является допустимым, но неправильно понятым переключателем. Он используется для различения различных режимов работы исполняемого файла в случае, если эти разные режимы будут иметь существенно разные трассировки предварительной выборки.[9]

Второй миф заключается в том, что пользователь должен удалить содержимое папки предварительной загрузки, чтобы ускорить работу компьютера. Если это будет сделано, Windows потребуется заново воссоздать все файлы предварительной выборки, тем самым замедляя Windows во время загрузки и запуска программы до тех пор, пока не будут созданы файлы предварительной выборки - если только предварительная выборка не отключена.[10][11]Windows сохраняет файлы предварительной выборки в папке предварительной выборки для 128 последних запущенных программ.[12]

Смотрите также

Рекомендации

  1. ^ а б c Руссинович Марк; Давид Соломон (2005). "Управление памятью". Внутреннее устройство Microsoft Windows (4-е изд.). Microsoft Press. стр.458–462. ISBN  0-7356-1917-4.
  2. ^ Патент США 6,633,968
  3. ^ «Архивная копия». Архивировано из оригинал на 2008-05-16. Получено 2008-02-23.CS1 maint: заархивированная копия как заголовок (связь)
  4. ^ Внутри ядра Windows Vista
  5. ^ а б c d http://home.comcast.net/~SupportCD/XPMyths.html#Optimization
  6. ^ http://www.microsoft.com/whdc/archive/XP_kernel.mspx
  7. ^ "Дезинформация и флаг предварительной выборки". Забавно, это сработало в последний раз. Блоги MSDN. 25 мая 2005 г.. Получено 2008-12-09. [...] это появилось на так много, много, много места быть городской легендой.
  8. ^ "Дезинформация и флаг предварительной выборки". Забавно, это сработало в последний раз. Блоги MSDN. 25 мая 2005 г.. Получено 2008-12-09. Во-вторых, можно указать / prefetch: #flag при запуске приложения. [...] Некоторые сайты догадались, что этот переключатель включает предварительную выборку, и предлагают добавить это в каждый исполняемый файл, который вам нужен [...]
  9. ^ "Дезинформация и флаг предварительной выборки". Забавно, это сработало в последний раз. Блоги MSDN. 25 мая 2005 г.. Получено 2008-12-09. Оба предположения неверны. Флаг / prefetch: # рассматривается ОС, когда мы создаем процесс, однако он имеет одну (и только одну) цель. Добавляем переданное число в хеш. Почему? [~ snip ~]
  10. ^ «Остерегайтесь поддельных советов по XP».
  11. ^ «Windows XP: улучшения ядра делают ОС более надежной, мощной и масштабируемой». Архивировано из оригинал на 2008-05-16. Получено 2008-02-23.
  12. ^ "Дезинформация и флаг предварительной выборки". Забавно, это сработало в последний раз. Блоги MSDN. 25 мая 2005 г.. Получено 2008-12-09. Во-первых, XP все равно просто воссоздает эти данные; во-вторых, он все равно обрезает файлы, если их больше 128, чтобы не занимать лишнее пространство.

внешняя ссылка