Категория: Windows 7 Seven / Обзоры и советы / Просмотров: 84924 / Комментариев: 2
Windows 7 включает в себя механизм кеширования файлов, который называется SuperFetch. Этот механизм используется для кешированя (сохранения) наиболее часто используемых файлов приложений в оперативную память, так что, в дальнейшем, эти приложения будут открываться все быстрее.
SuperFetch — это системный сервис, запускающийся внутри системного процесса svchost. Код его находится внутри DLL-ки %SystemRoot%\System32\Sysmain.dll. Этот сервис постоянно следит за тем, какие приложения запускает пользователь, и к каким исполняемым файлам и файлам данных они обращаются.
Вначале SuperFetch отслеживает пользовательскую активность и определяет наиболее часто используемые приложения, для чего создаёт базу данных, которая постоянно обновляется по ходу работы пользователя. Вся эта информация сохраняется в файлах с расширением *.db в каталоге %SystemRoot%\Windows\Prefetch.
Затем при каждом запуске системы SuperFetch, имея информацию о том с какими приложениями пользователь работает наиболее часто — заранее подгружает в память соответствующий код и данные и, когда пользователь запускает свое приложение — вся необходимая информация уже имеется в памяти, и запуск происходит на много быстрее — потому как нет необходимости считывать информацию с жесткого диска. Особенно это заметно на таких «тяжелых» приложениях, как семейство MS Office, функционал которых может быть «размазан» по десяткам и сотням exe-шников и dll-ок. SuperFetch настолько «умна», что может даже определять предпочтения пользователя в разные дни и время суток.
Казалось бы что процесс выглядит завершённым, но это не так. SuperFetch играет гораздо более значительную роль в способности системы сохранять свою эффективность со временем.
Поскольку множество приложений одновременно требуют определенного объема оперативной памяти, SuperFetch задействует технологию расстановки приоритетов операций ввода/вывода, которая помечает каждое приложение как программу с относительно низким или высоким приоритетом ввода/вывода.
Благодаря такой системе, SuperFetch определяет приложение с низким приоритетом как побочное, а приложение с высоким приоритетом — как главное. При этом SuperFetch постоянно отслеживает изменения приоритетов, чтобы система могла реагировать сообразно и в дальнейшем.
Если какое либо приложение, завершает свою работу и освобождает память — то SuperFetch обращается к менеджеру памяти с просьбой подгрузить только что выгруженный код и данные. Процесс этот происходит с маленькой скоростью и с низшим приоритетом, поэтому работа SuperFetch не приводит к падению производительности.
Если сравнительно долго работать с документом в программе Word. то всё это время приложение Word распознаётся службой SuperFetch как программа с высоким приоритетом и, соответственно, определяется как главная. перестав работать с этой программой, Word перестаёт быть активным приложением и другие работающие в фоновом режиме задачи, включая "Дефрагментатор диска", понимают, что ресурсы системы свободны и начинают действовать.
Когда это происходит, "Дефрагментатор диска" получает высокий приоритет, а Word — низкий, и SuperFetch удаляет Word из памяти в файл подкачки, освобождая место для процессов "Дефрагментатора диска". А сразу же по завершении этих процессовSuperFetch заново возвращает Word обратно в кэш памяти, поэтому, когда вы, через какое то время снова запустите World, скорость отклика Word остаётся той же, какой и была в момент вашего выхода из программы (то есть системе не потребуется загружать Word в память).
SuperFetch может обрабатывать режимы гибернации, «спящий режим» и смены пользователя. Если система уходит в гибернацию — то SuperFetch сохраняет в файл hiberfil.sys код и данные тех приложений, которые, по его мнению, скорее всего будут использоваться после выхода из гибернации.
Таким образом, служба SuperFetch существенно увеличивает быстродействие системы и установленных программ, поэтому отключать этот компонент настоятельно не рекомендуется.
SuperFetch появился еще в Windows Vista, но стоит отметить, что работа и использование КЭШа возможностью SuperFetch в Windows 7 значительно отличаются оттого, что было в Vista. Так, под Vista кэширование приложений начинается сразу после загрузки операционной системы. Как видно из графиков ниже, спустя уже три минуты после загрузки выделено уже около 1GB памяти. В тоже время в Windows 7 SuperFetch начинает работать через пять минут после загрузки и спустя 10 минут выделение памяти немногим более превышает 600MB. Тогда как в этой же точке Vista SuperFetch выделил уже более 1,5GB памяти.
Впрочем, даже с выключенным SuperFetch, Windows 7 требует меньше КЭШа. Для собственной работы она использует 333MB памяти, тогда как Vista без SuperFetch использует уже 519MB.
Новая реализация SuperFetch под Windows 7 положительно сказывается и на производительности. Очевидно, что Windows 7 требует меньшего количества ресурсов и использует значительной меньший кэш, чем Vista. Так же SuperFetch стартует гораздо позже, поэтому жесткий диск не занимается сразу после загрузки операционной системы, а свободен для запуска пользовательских задач. Это означает, что вам не приходится дожидаться момента, когда операционная система монополизирует системные ресурсы под кэширующие задачи.
Говоря простыми словами, SuperFetch пытается закачать данные приложений с медленного жёсткого диска в оперативную память. Служба использует всю доступную память, чтобы создать рабочую среду, которая позволит запускать приложения практически мгновенно.
Но, конечно, SuperFetch требует немалый объём памяти. Если у вас установлено 512 Мбайт, то служба не будет работать эффективно, поскольку Windows и 2-3 приложения уже "съедят" всю доступную память. И для кэшированных данных памяти просто не останется. Если же вы не работаете с несколькими приложениями одновременно, то SuperFetch положительно проявит себя уже при 1 Гбайт памяти. Но, объём ОЗУ 2 Гбайт и более отнюдь не повредит.
В операционной системе Windows 7, возможно контролировать уровень ускорения работы службы Superfetch через реестр.
По умолчанию, функция Superfetch включена для ускорения запуска системы и загрузки приложений (параметр DWORD 3). Тем не менее, вы можете либо отключить ускорение и загрузки системы и запуска приложений, либо что-то одно.
1. Нажмите сочетание клавиш WIN+R, в строке поиска введите regedit и нажмите Enter.
Откроется редактор реестра Windows.
2. Слева перейдите к ключу реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters
3. Справа двойным щелчком откройте окно редактирования параметра EnableSuperfetch и установите для него значение от 1 до 3 (если этого ключа нет, создайте его: нажмите правой кнопкой, выберите Создать – Параметр DWORD - назовите егоEnableSuperfetch и установите ему значение от 1 до 3).
4. Так же отредактируйте ключ EnablePrefetcher и установите для него значение от 1 до 3 (если ключа нет, создайте его: нажмите правой кнопкой, выберите Создать – Параметр DWORD - назовите его EnablePrefetcher и установите ему значение от 1 до 3).
Где:
0 – ускорение запуска отключено
1 – ускорение запуска только приложений
2 – ускорение только загрузки системы
3 – ускорение загрузки системы и запуска приложений
Для отключения службы SuperFetch достаточно ввести в командной строке, запущенной с правами администратора строку
sc config SysMain start= disabled
и перезагрузить компьютер.
Автор: Юрий Устинов.