Windows Vista ReadyBoost: решение для экономных

24 апрель, 2007 - 15:32Андрій Кухар

Операционная система Microsoft Windows Vista, разумеется, представляется более развитой по сравнению с Windows XP, однако из-за обилия новых возможностей она проигрывает ей по производительности. Чтобы как-то компенсировать это, в новой ОС появились механизмы, призванные уменьшить время запуска ОС и приложений. Сегодня мы проверим их работу на практике.

Как это было...

Windows Vista ReadyBoost решение для экономных
Windows Vista ReadyBoost решение для экономных
Сравните показания счетчиков по свободной памяти в начале работы: в среде Windows XP доступно порядка 400 MB, в Windows Vista - всего 7 MB

Ни для кого не секрет, что производимые Microsoft программные продукты развиваются преимущественно эволюционно. Поэтому, как правило, нельзя говорить о функциональности Windows Vista в отрыве от предыдущих версий этого семейства ОС. Если речь идет о подсистеме управления памятью новой ОС вообще или, конкретизируя, об одной из ее составляющих - механизме SuperFetch, не уделить внимания его предшественнику из Windows XP и Windows Server 2003 просто недопустимо. В указанных системах с целью ускорения запуска самой ОС и приложений был введен механизм интеллектуальной предварительной выборки (intelligent prefetch engine). Дело в том, что при обычной загрузке ПО его код и данные считываются сначала из одной части файла, потом из другой, затем из еще одного файла и т. д. Такие непредсказуемые скачкообразные переходы существенно замедляют каждую операцию доступа, и время поиска на диске становится доминирующим фактором, негативно влияющим на скорость запуска. Чтобы устранить его, prefetch при первой загрузке приложения отслеживает код и данные, к которым происходит обращение, сохраняет эту информацию в файлах с расширением .pf в каталоге %SystemRoot%Prefetch и при последующих запусках использует их для предварительного считывания требуемых страниц. А для сведения к минимуму вероятности "блуждания" по диску планировщик задач каждые три дня в периоды простоя формирует список файлов и каталогов в том порядке, в каком на них были ссылки при загрузке ПО, и сохраняет его в файле %SystemRoot%PrefetchLayout.ini. Далее на его основе осуществляется дефрагментация диска, в результате чего информация размещается непрерывно и в нужной последовательности. Благодаря этому эффект от предварительной выборки еще больший.

Неотъемлемой частью подсистемы управления памятью предыдущих версий Windows был и остается механизм буферизации, сохраняющий код и данные приложений в памяти после завершения их работы. Как результат после первой загрузки программы запускаются заметно быстрее. Однако он предполагает такой вид работы, при котором вы систематически используете лишь ограниченный набор ПО, например компоненты пакета Microsoft Office. Если же вы спорадически станете также прибегать к другим приложениям, буферизированные данные будут очищаться и положительный эффект нивелируется. Немаловажен и тот факт, что в этом механизме не предусмотрена возможность восстановления кэшированных страниц после завершения работы или перезагрузки системы. Вследствие этого свободное пространство памяти не будет заполняться до тех пор, пока не будет вызвана какая-нибудь программа.

Что-то с памятью Windows-машины стало

Специалисты Microsoft в ОС Windows Vista внедрили новый механизм управления памятью под названием SuperFetch, основывающийся на идее представления системной памяти как постоянно заполненного быстрого буфера, располагаемого между памятью процессора и жестким диском. SuperFetch произошел от prefetch, данная технология анализирует поведение пользователя относительно регулярного запуска приложений и на основе этих сведений осуществляет перемещение с упреждением кода программ в свободную оперативную память.

Данный механизм доступен во всех версиях Windows Vista и реализован в библиотеке %System Root%System32Sysmain.dll в виде службы, исполняемой в процессе Service Host. Она получает от менеджера памяти истории запуска приложений и сохраняет эту информацию в специальных файлах сценариев (scenario files) с расширением .db в каталоге %System Root%Prefetch. Когда же в памяти обнаруживается свободное пространство, SuperFetch опять обращается к менеджеру памяти для загрузки в нее данных и кода, которые ориентировочно вскоре могут понадобиться. Чтобы не оказывать влияния на активные в настоящий момент процессы, перемещение совершается малыми порциями. SuperFetch адекватно воспринимает режимы "сна" (hibernation) и ожидания (standby), а также быстрой смены пользователя (Fast User Switching). К примеру, когда система "засыпает", сервис копирует в hibernation-файл те данные и код, которые предположительно будут необходимы после "пробуждения". Стоит отметить, что в Windows XP при этом ранее кэшированные страницы не попадают в оперативную память и при обращении к ним должны вновь считываться с диска.

Не мытьем, так катаньем

Windows Vista ReadyBoost решение для экономных
После того как накопитель был выделен для нужд ReadyBoost, следует указать размер резервируемой памяти

Вполне естественно, что для работы таких алгоритмов возникает потребность в как можно большем объеме ОЗУ. Но микросхемы памяти все еще не столь дешевы, как нам того хотелось бы, и практически все современные компьютеры поставляются с 512 MB RAM. Кроме того, бывают случаи, когда просто нет возможности увеличить память. Чтобы хоть как-то восполнить этот недостаток, в Windows Vista включен механизм под названием ReadyBoost, позволяющий расширять основную память с помощью довольно доступных флэш-накопителей USB 2.0. Имеющиеся сейчас на рынке продукты, как правило, обладают емкостью от 512 MB до 4 GB, при этом массовыми являются гигабайтовые модели. Помимо таких устройств, можно применять флэш-карты посредством кард-ридеров, главное требование - способность передавать данные по интерфейсу USB 2.0. Между тем одновременно можно использовать только один накопитель.

Известно, что по скорости передачи данных жесткие диски оставляют позади флэш-накопители USB 2.0. У первых этот показатель находится в пределах 60-80 MBps (к слову, следует учитывать, что на деле такая скорость редко обеспечивается вследствие высокоприоритетных системных запросов), у последних - 5-30 MBps. Но здесь следует обратить внимание на время доступа к информации, ведь оно в данном случае более важное. По значению этого показателя HDD как раз и проигрывают: у них время доступа составляет порядка 10-20 мс, в то время как у флэш-накопителей USB 2.0 оно на порядок меньше - 0,5-1 мс. Следовательно, для буферизации данных и кода программ на втором месте после оперативной памяти вместо жесткого диска выгоднее использовать флэш-память.

Windows Vista ReadyBoost решение для экономных
После подключения флэш-накопителя в окне выбора вариантов действий появляется пункт "Ускорить работу системы", вызывающий ReadyBoost

ReadyBoost составляют служба, реализованная в %SystemRoot%System32Emdmgmt.dll, которая выполняется в Service Host, и драйвер фильтра томов %SystemRoot%System32Driversecache.sys. Когда вы вставляете USB-ключ в систему, служба определяет характеристики устройства и сохраняет эти данные в ветке реестра HKLMSoftwareMicrosoftWindows NTCurrent VersionEMDMgmt. Если накопитель отвечает требованиям, т. е. его размер 256 MB - 32 GB, скорость передачи данных - от 2,5 MBps для случайных считываний блоками по 4 KB и 1,75 MBps - для случайных записей по 512 KB, то ReadyBoost предложит использовать до 4 GB его емкости для кэширования. После одобрения вами этого решения служба создаст в корневом каталоге устройства файл ReadyBoost.sfcache и сообщит SuperFetch, чтобы тот применял его для выборки информации с упреждением. После этого драйвер ecache.sys начнет перехватывать все запросы на считывание и запись в локальные дисковые разделы и копировать все записываемые данные в ReadyBoost.sfcache. И когда им будут перехвачены запросы на произвольное чтение, удовлетворяемые кэшем, он станет брать информацию именно отсюда. Сложнее ситуация с последовательным доступом. Поскольку жесткие диски имеют лучшие скоростные показатели для таким образом организованных данных, то даже если они и попали в кэш, ReadyBoost не станет "вмешиваться" в подобные запросы. Следует учитывать, что в процессе своей работы ecache.sys подвергает информацию сжатию, которое обычно достигает степени 2:1, т. е. те же 4 GB будут на самом деле отвечать 8 GB. Драйвер из соображений безопасности также шифрует каждый записываемый им блок, используя стандарт AES (Advanced Encryption Standard). Впрочем, Windows Vista не сохраняет какие-либо критические сведения на флэш-устройстве, это означает, что вы можете без последствий извлечь его из системы и использовать для других целей.

Ты только все, пожалуйста, запомни...

Windows Vista ReadyBoost решение для экономных
Windows Vista ReadyBoost решение для экономных
Windows Vista ReadyBoost решение для экономных
Windows Vista ReadyBoost решение для экономных

Мы проводили тестирование работы SuperFetch и ReadyBoost на двух системах: ноутбуке Lenovo 3000 N100 и относительно современном и стандартном офисном десктопе. Их характеристики приведены в таблице. Нами использовались три накопителя USB-флэш: гигабайтовые Kingston Data Traveler R (Enhanced for Windows ReadyBoost) и Samsung USB Flash Drive, а также карта Transcend CompactFlash 8 GB (TS8GCF120) в кард-ридере SanDisk ImageMate 12 in 1. Сразу оговоримся, что оба USB-ключа дали практически идентичные значения, поэтому для краткости и ясности мы будем приводить значения, полученные только для одного (Kingston DataTraveler R). Также из этой ситуации можно сделать вывод о том, что поиск специальных, "сертифицированных" для ReadyBoost накопителей вовсе не обязателен, так как даже обычные позволяют воспользоваться преимуществами новой технологии. Единственное, что мы можем порекомендовать: при покупке устройства для такого применения отдавайте предпочтение более дорогим и скоростным продуктам, как правило, свою цену они честно отрабатывают.

Это касательно аппаратного обеспечения. Теперь перейдем к программным средствам. Мы применяли две 32-разрядные версии ОС Windows Vista: русскую OEM-редакцию Home Basic и английскую коробочную Ultimate. В качестве "подопытных" были выбраны Adobe Photoshop CS 2 и Microsoft Visual C++ 2005. В первой программе открывался .psd-файл размером около 10 MB, во второй - "скелет" проекта Win32-приложения. После того как данные средства были установлены, мы создали точку восстановления и при каждом наборе тестов возвращали первоначальное состояние, чтобы SuperFetch не мог "учиться" во время нашей работы. А вообще мы проводили для каждой системы по три серии испытаний: без использования USB-накопителей, с применением 1 GB-ключа и с CF-картой, с выделением для нужд ReadyBoost 4 GB пространства. Серия состоит из трех циклов, каждый из которых включает три запуска приложения; между циклами выполнялась перезагрузка. Перед запуском "подопытных" мы "для разогрева" вызывали Internet Explorer с локальным почти мегабайтовым HTML-файлом, между вызовами приложений ждали 2 мин, чтобы дать возможность SuperFetch сделать свою работу. Затем выгружали программы в обратном порядке и вновь ждали 2 мин.

Windows Vista ReadyBoost решение для экономных
Сведения о USB 2.0 флэш-устройствах можно найти в реестре

Итак, что же мы получили (см. диаграммы). Для ноутбука с ОЗУ 1 GB выгода от применения флэш-накопителей как размером 1 GB, так и 4 GB, есть, однако, как вы видите, она несущественна. Хотя, конечно, "выигрыш" в 5 с может быть заметен. Причем оба накопителя обеспечивают значения, отличающиеся буквально на секунды. На десктопе ситуация значительно лучше. Так, здесь в среднем разница по времени между "чистой" системой и флэш-устройствами для Photoshop CS 2 составляет около 7-8 с, для Visual C++ - порядка 12-15 с, не говоря уже о первом запуске, где польза - сокращение на 20-25 с. Между самими накопителями наблюдается разница в пределах 3-5 с.

Из этих данных напрашиваются такие выводы. Для работы с Windows Vista все же желательно обзавестись 1 GB оперативной памяти. В таком случае вы получите возможность сравнительно быстро запускать несколько "тяжелых" программ. Для применения большего количества приложений явно нелишними окажутся и все 2 GB. Но если вы владеете лишь 512 MB RAM и в перспективе ее наращивание не предвидится, а требуется использование Windows Vista, не отчаивайтесь - флэш-накопители вполне могут помочь, ведь даже носитель емкостью 1 GB позволяет повысить скорость работы.

Конфигурация тестового стенда
Параметры Ноутбук Lenovo 3000 N100 Десктоп
Процессор Intel Core 2 Duo T5600 1,83 GHz Pentium D 3,00 GHz
Объем ОЗУ, MB 1024 504
Чипсет Intel 945PM Intel 945G
Видеоадаптер NVIDIA GeForce 7300 Intel GMA 950
Объем видеопамяти, MB 512 8
Жесткий диск, GB 100 200
ОС Windows Vista Home Basic (RU) Windows Vista Ultimate