Hart_Flamov, кэширует, кэширует. Если не верите - перезагрузите машину и сразу же запустите файловый мониторинг. Через 5 минут (или на сколько там по таск шедулеру выставлено по умолчанию) после загрузки начинает кушать суперфетч. И кушает он все подряд.
Не все подряд, критерии отбора все-таки есть, и то, что читалось с диска большими кусками, суперфетч и редибуст игнорируют. Одна операция по чтению мегабайта для жесткого диска намного менее наладна, чем 32 операции по чтению 32 Кб. Больше того, они стараются отфильтровать и поточное чтение большого куска данных мелкими блоками, но не всегда получается. На низком уровне сильный интеллект не организуешь, чересчур накладно получается.
и мне очень любопытно, что же туда суперфетч кеширует... 3,5 гига непонятного хлама в памяти и никак не посмотреть, что там...
Новая утилита RAMMap от Mark Russinovich and Bryce Cogswell. Показывает подробную карту использования оперативной памяти и даже можно просмотреть список файлов, находящихся в файловом кэше в данный момент.
Под итожим:
- Prefetcher – Предварительная выборка, следит за оптимальной загрузкой ОС и часто используемых программ, т.е. менеджер памяти отслеживает все в данном случае и создает "карты" ссылок (где что лежит) записывая параметры в файлы *.pf в C:\Windows\Prefetch. Далее просто считываем эти параметры из этих файлов *.pf
Имеем команды:
реестр HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\PrefetchParameters
параметр EnablePrefetcher
- отключить предварительную выборку = 0
- включить предварительную выборку для часто используемых программ = 1
(оптимизация запуска ОС не будет)
- включить предварительную выборку для ОС = 2
(оптимизация запуска, но отключен запуск часто используемых программ)
- включить предварительную выборку =3
(все, стоит по умолчанию)
Нужна память выгружаем ранее загруженные, а когда понадобятся то загружаем заново.
Дальше технология пошла в перед, т.е. добавили SuperFetch – cупервыборка, а именно сделали ее немного умной, теперь происходит отслеживание страниц памяти и (C:\Windows\Prefetch файлы *.db), которые ранее были выгружены для загрузки приложения пользователя. Как только память освободилось (без разницы из-за чего) менеджер памяти восстанавливает выгруженные ранее страницы с приоритетом ввода-вывода Very Low (очень низкий), поэтому некому и не чему не мешает. У SuperFetch есть сценарии поддержки гибернации, ждущего режима, быстрого переключения пользователей, при переходе в режим гибернации, данные SuperFetch будут сохранены в файле гибернации.
Имеем команды:
реестр раскройте HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\PrefetchParameters
параметр EnableSuperfetch.
- отключить = 0 (или можно и службу)
- включить для часто используемых программ = 1
- включить для оптимизации ОС = 2
- включить для всего = 3
Вот появился третий игрок - ReadyBoost, т.е. использовать память flash носителя между ОЗУ и HDD, где flash быстра во всем своем объеме по сравнению с HDD при произвольных выборках на HDD, так время доступа у flash менее 1ms, но медленна по сравнению с HDD при последовательном чтении с HDD данных. Почему бы данную технологию в том моменте когда она быстрее не использовать бы. Объемы flash увеличиваем за счет сжатия. На первоначальном этапе файл кэша ReadyBoost.sfcache заполняется с помощью SuperFetch, так как именно он знает что необходимо пользователю, потом переход под контроль драйвера Ecache.sys, который перехватывает все обращения чтения и записи к HDD и копирует записываемые данные в файл кэширования. Данные из кэша извлекаются в зависимости как было описано выше при произвольном доступе если на HDD, то идут из файл кэширования.
И опять не все еще про одного игрока забыли - ReadyBoot, та же самая служба ReadyBoost (драйвер Ecache.sys) в момент простоя планирует кэширование для следующей загрузки системы, так же подвергая анализу обращениях к файлам за пять последних загрузок и определяет, к каким файлам производились обращения и где они расположены на диске, эта уже информация попадпет в фалы *.fx - C:\Windows\Prefetch\Readyboot, а план кэширования сохраняется в разделе реестра HKLM\System\CurrentControlSet\Services\Ecache\Parameters под переменной REG_BINARY с именами, соответствующими именам внутренних дисков. Содержимое кэша не изменяется при операциях чтения и записи, а определяется только обновлениями, вносимыми службой ReadyBoost. Служба ReadyBoost удаляет кэш через 90 секунд после начала загрузки или когда требуется дополнительная память.
И как сказал Игорь Лейко действительно есть возможность отслеживания на чтение, какой будет доступ к файлу с произвольным или когда он лежит последовательно.
Только вот используя дефрагментацию мы эти настройки все сбиваем, поэтому ПК опять необходимо 3-5 перегрузок для настройки всех этих механизмов.
Johny-electric,
кэширует, кэширует. Если не верите - перезагрузите машину и сразу же запустите файловый мониторинг. Через 5 минут (или на сколько там по таск шедулеру выставлено по умолчанию) после загрузки начинает кушать суперфетч. И кушает он все подряд.
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.035 секунд (Общее время SQL: 0.015 секунд - SQL запросов: 84 - Среднее время SQL: 0.00017 секунд))