Предварительная выборка
Prefetcher — это компонент Microsoft Windows , который был представлен в Windows XP . [1] Это компонент диспетчера памяти , который может ускорить загрузки процесс Windows и сократить время, необходимое для запуска программ. Это достигается за счет кэширования файлов, необходимых приложению, в оперативной памяти при запуске приложения, таким образом объединяя операции чтения с диска и сокращая количество операций поиска на диске. Эта особенность описана в патенте США № 6633968. [2] [3]
Начиная с Windows Vista , функция 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
в каталоге Prefetch и впоследствии передается программе дефрагментации диска, давая ей указание переупорядочить эти файлы в последовательные позиции на физическом жестком диске.
Это еще больше повысит производительность за счет сведения к минимуму расстояния, на которое головки жесткого диска должны перемещаться от одного файла к другому.
Это переупорядочение можно запустить (запустив «Defrag.exe %systemdrive% -b» из командной строки) без выполнения полной дефрагментации. [ нужна ссылка ]
Если система установлена на твердотельный накопитель , ReadyBoost отключен.
Конфигурация
[ редактировать ]Конфигурация Prefetcher хранится в реестре Windows по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
. Значение EnablePrefetcher может быть одним из следующих: [5]
- 0 = отключено
- 1 = предварительная выборка приложения включена
- 2 = предварительная выборка загрузки включена (по умолчанию только в Windows Server 2003). [6]
- 3 = предварительная выборка приложений и загрузки включена (по умолчанию в настольных версиях Windows). [5]
Рекомендуемое значение — 3 . [5] Значения выше 3 не увеличивают производительность, а изменение значения на 2 не приведет к ускорению загрузки Windows. [5]
Неправильная настройка префетчера
[ редактировать ]Часто встречается в Интернете [7] это настройка приложения "/prefetch:1", [8] это действительный, но неправильно понятый переключатель. Он используется для различения разных режимов работы исполняемого файла в случае, если эти разные режимы будут иметь существенно разные трассировки предварительной выборки. [9]
Второй миф заключается в том, что пользователю следует удалить содержимое папки предварительной выборки, чтобы ускорить работу компьютера. Если это будет сделано, Windows придется заново создать все файлы предварительной выборки, тем самым замедляя работу Windows во время загрузки и запуска программы до тех пор, пока файлы предварительной выборки не будут созданы — если только предварительная выборка не отключена. [10] [11] [12] Windows хранит файлы предварительной выборки в папке Prefetch для 128 последних запущенных программ. [13]
См. также
[ редактировать ]- Windows ReadyBoost
- Технологии ввода-вывода Windows Vista
- Список компонентов Microsoft Windows
- Новые возможности Windows XP
- readahead – эквивалентная Linux технология
- Предварительная загрузка ссылок – эквивалент для веб-сайтов
- Предварительная выборка кэша
Ссылки
[ редактировать ]- ^ Jump up to: а б с Руссинович, Марк ; Дэвид Соломон (2005). «Управление памятью». Внутреннее устройство Microsoft Windows (4-е изд.). Майкрософт Пресс. стр. 458–462 . ISBN 0-7356-1917-4 .
- ^ «Предварительная выборка страниц перед последовательностью жестких ошибок страниц» , патент США № 6,633,968 , получено 16 ноября 2023 г.
- ^ «Домашняя страница журнала MSDN» . Архивировано из оригинала 16 мая 2008 г. Проверено 23 февраля 2008 г.
- ^ «Внутри ядра Windows Vista» .
- ^ Jump up to: а б с д «Мифы о XP» . Архивировано из оригинала 8 апреля 2009 г. Проверено 17 марта 2009 г.
- ^ «Центр разработки оборудования для Windows» . Майкрософт .
- ^ «Дезинформация и флаг предварительной выборки» . Майкрософт . 25 мая 2005 года . Проверено 9 декабря 2008 г.
- ^ «Дезинформация и флаг предварительной выборки» . Забавно, в прошлый раз это сработало . Блоги MSDN. 25 мая 2005 года . Проверено 9 декабря 2008 г.
Во-вторых, при запуске приложения можно указать флаг /prefetch:#flag. [...] Некоторые сайты догадались, что этот переключатель включает предварительную выборку, и предлагают добавить ее к каждому исполняемому файлу, который вам нужен [...]
- ^ «Дезинформация и флаг предварительной выборки» . Забавно, в прошлый раз это сработало . Блоги MSDN. 25 мая 2005 года . Проверено 9 декабря 2008 г.
Оба предположения неверны . Флаг /prefetch:# проверяется операционной системой при создании процесса, однако у него есть одна (и только одна) цель. Добавляем переданное число в хеш. Почему? [~отрывок~]
- ^ Гралла, Престон (2007). Большая книга хаков для Windows . «О'Рейли Медиа, Инк.». ISBN 978-0-596-52835-5 .
- ^ «Остерегайтесь фиктивных советов по XP» .
- ^ «Windows XP: улучшения ядра создают более надежную, мощную и масштабируемую операционную систему» . Архивировано из оригинала 16 мая 2008 г. Проверено 23 февраля 2008 г.
- ^ «Дезинформация и флаг предварительной выборки» . Забавно, в прошлый раз это сработало . Блоги MSDN. 25 мая 2005 года . Проверено 9 декабря 2008 г.
Во-первых, XP в любом случае просто воссоздаст эти данные; во-вторых, он все равно обрезает файлы, если их больше 128, чтобы не занимать место без необходимости.
Внешние ссылки
[ редактировать ]- Руководство по предварительной выборке Windows
- Предварительная выборка или SuperFetch
- Синтаксический анализатор предварительной выборки Windows. Архивировано 4 июня 2011 г. на Wayback Machine. Бесплатный инструмент, который можно запускать в Windows, Linux или Mac OS-X.