Сказки про «полезные» оптимизаторы памяти

Сергей Пахомов

Организация памяти в Windows XP

   Страничная организация памяти

   Сегментная организация памяти

   Сегментно-страничная организация памяти

Принцип работы менеджера памяти

Фокусы оптимизаторов памяти

Практические примеры

   dRAMatic v 8.1

   Clean RAM 1.21

   FAST Defrag 2.3

   FreeRAM XP Pro 1.52

   Memory Optimizer 2002a

   MemTurbo 2

   RAM Idle Professional 3.4

Выводы

 

Нас так часто обманывают, что мы к этому уже привыкли и не доверяем никому и ничему. Ложь рекой льется с экранов телевизоров, из уст высокопоставленных чиновников, в центральной прессе то и дело появляются проплаченные заказные статьи с явной неправдой, а уж про ненадлежащую рекламу и говорить не приходится. Вспомним хотя бы страшилки про птичий грипп, которые внезапно возникли и так же неожиданно, подчиняясь чьей-то искусной дирижерской палочке, исчезли. Или про отравленное грузинское и молдавское вино. В результате эти вина исчезли с прилавков магазинов, а вместо них нам предложили довольствоваться дешевым вином из других стран, которое как нельзя лучше соответствует слову «бормотуха». Примеры такого «гуманизма» встречаются на каждом шагу. «Но при чем здесь программное обеспечение и компьютеры?» — спросите вы. Все очень просто: принцип «обмани и получи выгоду» нередко применяется и в области программного обеспечения. Наряду с полезными программами пользователям нередко (причем за деньги) предлагают и откровенные пустышки, которые, по заявлениям производителей, способны в разы увеличить производительность системы. В лучшем случае они не навредят, а в худшем — вместо обещанного увеличения производительности приведут к обратному эффекту. Классическим примером такого рода программ являются оптимизаторы оперативной памяти, которые и будут рассмотрены в настоящей статье.

Принцип, которым руководствуются компании, предлагающие оптимизаторы памяти, достаточно прост и неоригинален. Надо заставить пользователя поверить в чудодейственные возможности утилиты и убедить его, что использование оптимизатора памяти позволит и решить проблему нехватки памяти, и повысить производительность ПК. Сделать это не так уж сложно, особенно если речь идет о неискушенном пользователе. Алгоритм убеждения примерно таков. Прежде всего необходимо убедить пользователя, что операционная система Windows XP далека от идеала. Учитывая постоянную критику в адрес Microsoft, сделать это легко (тем более что в этом есть доля истины), ну а для пущей убедительности можно напомнить о регулярном появлении так называемых заплаток и обновлений к операционной системе. Далее нужно убедить пользователя, что исправить недочеты операционной системы можно с помощью сторонних утилит (факт достаточно спорный, хотя отчасти он соответствует действительности). В качестве примера можно привести множество сторонних утилит (те же дефрагментаторы), которые по некоторым характеристикам лучше встроенных в операционную систему. Ну а если все это «приправить» научными терминами об утечке оперативной памяти, о необходимости ее дефрагментации и о неоптимизированных алгоритмах выделения оперативной памяти процессам (главное при этом — окончательно запудрить мозги специфическими терминами), то необходимость использования сторонних оптимизаторов памяти (наделенных интеллектуальными, продвинутыми алгоритмами слежения за состоянием памяти, позволяющих оптимизировать ее распределение и проводящих в случае необходимости автоматическую дефрагментацию) становится просто очевидным фактом.

На сфабрикованную таким образом утку кто-нибудь да клюнет. Причем, как показывает практика, клюют многие.

Чтобы доказать пользователю необоснованность приведенных выше рассуждений, необходимо сначала рассказать, каким образом операционная система Windows XP распределяет оперативную память.

Организация памяти в Windows XP

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

Одним из способов разделения физической памяти между различными процессами и размещения в памяти программ, размер которых превышает размер доступной физической памяти, является использование технологии виртуальной памяти (virtual memory), которая впервые была реализована в 1959 году на компьютере «Атлас», разработанном в Манчестерском университете. Однако популярной технология виртуальной памяти стала лишь спустя десятилетия.

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

Системы виртуальной памяти можно разделить на три класса:

  • системы с фиксированным размером блоков, называемых страницами,  — страничная организация памяти;
  • системы с переменным размером блоков, называемых сегментами, — сегментная организация памяти;
  • комбинированные системы с сегментно-страничной организацией памяти.

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

Страничная организация памяти

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

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

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

Таким образом, по номеру страницы определяется физический адрес этой страницы в памяти. Далее с учетом известного смещения в пределах требуемой страницы определяется физический адрес искомого элемента памяти (рис. 1).

 

Рис. 1. Связь логического и физического адресов при страничной организации памяти

Любой процесс может выполняться только в том случае, если используемые им страницы памяти размещаются в оперативной памяти. При отсутствии запрашиваемой страницы в оперативной памяти возникает исключительная ситуация — страничное нарушение (page fault). Тогда затребованная страница подкачивается из внешней памяти (своп-файла) в свободный страничный кадр физической памяти, а при отсутствии свободных страничных кадров в оперативной памяти первоначально в своп-файл выгружается мало используемая страница памяти.

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

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

Сегментная организация памяти

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

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

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

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

 

Рис. 2. Преобразование логического адреса при сегментной организации памяти

Сегментно-страничная организация памяти

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

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

 

Рис. 3. Формирование физического адреса при сегментно-страничной организации памяти

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

Далее мы рассмотрим 32-разрядные операционные системы (к коим относится и Windows XP) в совокупности с процессорами, поддерживающими 32-разрядную адресацию памяти (современные 64-разрядные процессоры при применении 32-разрядной ОС работают как 32-разрядные процессоры).

При 32-разрядной адресации памяти объем виртуальной адресуемой памяти составляет 232 = 4 Гбайт. При сегментно-страничной организации памяти адрес, как уже отмечалось, состоит из трех полей, которые определяют номер каталога страниц, номер страницы и смещение в пределах страницы. Для задания номера каталога и номера страницы используется по 10 бит, а для задания смещения — оставшиеся 12 бит. В этом случае поддерживается 210 =1 024 каталога страниц и 1024 страницы внутри каждого каталога, а общее количество страниц может составлять 220 = 1 048 576. Учитывая, что для задания смещения внутри страницы применяется 12 разрядов адреса, нетрудно посчитать, что размер одной страницы составляет 212 = 4096 байт = 4 Кбайт.

Рассмотрим более подробно отдельный элемент (запись) таблицы страниц (Page Table Element, PTE). Каждая запись таблицы страниц является 32-разрядной. Старшие пять разрядов определяют тип доступа к странице (нет доступа, только чтение, чтение и запись). Следующие 20 бит задают физический адрес страницы в памяти. Если учесть, что для задания смещения в пределах страниц используется 12 бит, то в совокупности с 20 битами, применяемыми для описания физического адреса страницы, получаем как раз 32-разрядную адресацию памяти. Следующие 4 бита в PTE определяют применяемый файл подкачки (один из 16 возможных), а последние 3 бита задают состояние страницы памяти. Первый из этих битов (T-бит, Transition) определяет, является ли страница переходной (T = 1) или нет (T = 0), второй бит (D-бит, Dirty) — была ли произведена в страницу запись (D = 1) или запись не проводилась (D = 0), последний бит (P-бит, Present) — находится ли страница в оперативной памяти (P = 1) или же в файле подкачки (P = 0). Информация о состоянии страницы необходима для того, чтобы принять решение о сохранении страницы в файле подкачки при ее вытеснении (принудительном освобождении занятой памяти). Действительно, если страница не изменялась в памяти после загрузки, то ее можно просто стереть, ведь в файле подкачки сохранилась ее копия.

Принцип работы менеджера памяти

Для управления виртуальной памятью в операционной системе Windows предусмотрен специальный менеджер Virtual Memory Manager (VMM). Он является составной частью ядра операционной системы и представляет собой отдельный процесс, постоянно находящийся в оперативной памяти. Основная задача VMM заключается в управлении страницами виртуальной памяти.

Каждому процессу (запущенному приложению) VMM выделяет часть физической памяти, которая называется рабочим набором (Working Set). Кроме того, VMM создает базу состояния страниц (page-frame database), которая организована как шесть списков страниц одного типа. Выделяют следующие типы страниц:

  • Valid — рабочая страница используется процессом. Такие страницы памяти реально существуют в физической памяти. Если процесс освобождает страницу памяти, то VMM убирает ее из списка Valid. Если процесс пытается обратиться к странице, которой нет в списке Valid, то генерируется ошибка (Page Fault) и VMM может отвести процессу новую страницу. Страницы типа Valid в таблице страниц описываются как присутствующие (P = 1);
  • Modified — модифицированная страница, то есть страница, содержимое которой было изменено. В таблице страниц данные страницы отмечаются как отсутствующие (P = 0) и переходные (T = 1);
  • Standby — резервная страница, содержимое которой не изменялось. В таблице страниц такие страницы отмечаются как отсутствующие (P = 0) и переходные (T = 1);
  • Free — свободная страница, на которую не ссылается ни один рабочий набор и которой нет ни в одной таблице страниц. В список Free помещаются страницы, которые освободились после окончания процесса. Свободные страницы могут применяться, однако прежде они подлежат процедуре обнуления (заполнения нулями). Процедурой обнуления страниц занимается специальная подпрограмма менеджера памяти Zero Page Thread;
  • Zeroed — пустая страница, которая является свободной и обнуленной. Такие страницы готовы к использованию любым процессом;
  • Bad — страница, которая вызывает аппаратные ошибки и не может применяться ни одним процессом.

Как уже отмечалось, если какой-нибудь процесс обращается к странице, которой нет в рабочем наборе (в списке Valid), то возникает ошибка обращения к странице. В этом случае задача VMM заключается в том, чтобы разрешить данную конфликтную ситуацию и выделить страницу свободной физической памяти для хранения данных, к которым обратился процесс. Существует несколько способов решения данной конфликтной ситуации. Во-первых, VMM может расширить рабочий набор процесса, добавив к нему необходимую страницу. Однако если в памяти нет места для выделения дополнительных страниц, то VMM замещает страницу, находящуюся в рабочем наборе, новой страницей. Понятно, что в идеале замещению должна подлежать та страница, к которой в будущем не будет обращений, или страница, которая не будет использоваться дольше других. Однако достоверного способа определить, какая именно страница отвечает перечисленным критериям, нет. Поэтому менеджер памяти применяет следующий хитроумный алгоритм. Он периодически просматривает список рабочих страниц (Valid) и помечает их как отсутствующие (P = 0). Однако данные страницы не удаляются из рабочего процесса — они остаются на месте и просто переводятся из категории Valid в категорию модифицированных (Modified) или резервных (Standby) страниц (естественно, никаких изменений в содержимом этих страниц не производится). Если измененная таким образом страница требуется какому-нибудь процессу, то происходит обращение к ней и возникает ошибка обращения к странице. Но поскольку в действительности страница находится в физической памяти и ее содержимое не подвергалось изменению, то менеджеру памяти достаточно просто перевести данную страницу обратно в категорию Valid, сделав ее доступной для процесса. Если же страница не используется в течение длительного времени процессами, то обращений к ней не происходит и она со временем переводится в категорию свободных (Free) страниц, а затем обнуляется и переводится в категорию пустых (Zeroed) страниц.

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

На рис. 4 показаны переходы между различными категориями (списками) страниц.

 

Рис. 4. Переходы между различными категориями страниц памяти

Фокусы оптимизаторов памяти

После того как мы разобрались с основами организации памяти и принципами функционирования менеджера памяти в операционных системах семейства Windows, самое время рассмотреть, каким образом с помощью оптимизаторов памяти можно увеличить объем доступной (Available) физической памяти. Для операционной системы доступной памятью является сумма пустых (Zeroed), свободных (Free) и резервных (Standby) страниц.

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

Итак, рассмотрим первую возможность, предоставляемую всеми оптимизаторами памяти, — увеличение доступной памяти. Достигается это следующим образом. Оптимизатор памяти, как и любая программа, является процессом, которому менеджер памяти выделяет свой рабочий набор. Оптимизаторы памяти ведут себя весьма агрессивно и требуют под свои нужды выделения все новых и новых страниц, то есть постоянно расширяют свой рабочий набор. Сделать это нетрудно — нужно лишь за короткое время реализовать многочисленные обращения к несуществующим страницам памяти, что вызывает ошибки обращения. В ответ на возникающие ошибки обращения менеджер памяти увеличивает рабочий набор оптимизатора сначала за счет доступной памяти, а когда лимит доступной памяти исчерпывается, расширение рабочего набора оптимизатора достигается за счет механизма замещения страниц, осуществляемого менеджером памяти. То есть рабочие наборы всех остальных процессов уменьшаются, а рабочий набор оптимизатора памяти увеличивается.

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

Описанный алгоритм увеличения доступной памяти, который используют все оптимизаторы памяти, имеет одно существенное негативное последствие. Дело в том, что, во-первых, такая «оптимизация» памяти приостанавливает работу всех остальных программ (особенно если оптимизация происходит в автоматическом режиме), а во-вторых, в процессе замещения страниц происходит вытеснение страниц, принадлежащих различным процессам, на жесткий диск ПК. После того как оптимизатор заканчивает свою работу, активным процессам, чьи рабочие наборы были вытеснены на диск, приходится повторно считывать данные с диска, что, конечно же, негативно сказывается на производительности ПК. Поэтому оптимизаторы памяти создают лишь иллюзию того, что они освобождают память, делая ее доступной. На самом деле, как только оптимизатор заканчивает свою деятельность, менеджер памяти возвращает все к исходному состоянию, но достигается это за счет снижения производительности системы.

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

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

Практические примеры

После теоретического разоблачения оптимизаторов памяти перейдем к рассмотрению практических примеров. Мы выбрали несколько популярных оптимизаторов памяти, которые легко можно найти в Интернете. Думается, их будет вполне достаточно, чтобы убедиться в никчемности подобных устройств.

Для тестирования оптимизаторов памяти использовался ноутбук на базе мобильной технологии Intel Centrino, оснащенный процессором Intel Pentium M (Dothan) с тактовой частотой 1,6 ГГц и 512 Мбайт оперативной памяти DDR400.

Прежде чем приступать к рассмотрению того, как различные оптимизаторы влияют на производительность системы, проведем простой эксперимент, демонстрирующий действие менеджера памяти, входящего в состав операционной системы Windows XP Professional SP2.

Загрузим ноутбук и запустим Windows Task Manager, который позволяет контролировать объем доступной памяти (Avaliable). В нашем случае после загрузки операционной системы объем доступной памяти составляет 334 000 Кбайт (рис. 5).

 

Рис. 5. Объем доступной памяти после загрузки операционной системы

Далее последовательно загрузим несколько приложений: документ Word, Adobe Photoshop CS2 c фотографией размером 3 Мбайт, утилиту Paint и приложение Solid Works 2005 c загруженным проектом. После открытия всех указанных приложений, которые в первый момент воспринимаются операционной системой как активные, размер доступной памяти уменьшается до 47 300 Кбайт (рис. 6).

 

Рис. 6. Объем доступной памяти после загрузки приложений

Теперь сделаем приложения неактивными (для этого просто не будем производить каких-либо действий с компьютером) и понаблюдаем за изменением доступной памяти с помощью утилиты Windows Task Manager. Уже через 10 минут «бездействия» объем доступной памяти достигнет 311 500 Кбайт, то есть станет почти таким же, как и в случае загрузки операционной системы без указанных приложений. Данный пример доказывает, что менеджер памяти автоматически регулирует объем доступной памяти, изымая ее у неактивных процессов.

Для того чтобы продемонстрировать пагубное влияние оптимизаторов памяти, воспользуемся бенчмарком PCMark05. Все подтесты, входящие в этот тест, нам не потребуются, поскольку в данном случае нас не интересует производительность жесткого диска, графической подсистемы или латентность памяти. Мы выберем лишь подтесты, нуждающиеся в большом объеме оперативной памяти. Понятно, что эти подтесты должны быть многозадачными, поскольку в данном случае мы имеем несколько активных процессов, для каждого из которых в оперативной памяти создается свой рабочий набор. В бенчмарке PCMark05 многозадачными являются три подтеста: Multithreaded Test 1, Multithreaded Test 2 и Multithreaded Test 3.

Поскольку практически все оптимизаторы памяти позволяют задавать размер доступной памяти, по достижении которого автоматически начинается процедура высвобождения доступной памяти, мы установим данный барьер на уровне 220 000 Кбайт и попробуем запустить при этом тест PCmark05. Изменение размера доступной памяти контролируется с помощью утилиты Windows Task Manager.

В первом подтесте объем доступной памяти не ниже 210 000 Кбайт, во втором подтесте — не ниже 260 000 Кбайт, а в третьем — не ниже 214 000 Кбайт. Понятно, что для того, чтобы в ходе теста автоматически активировался оптимизатор памяти, необходимо выбрать барьер доступной памяти на уровне примерно 250 000 Кбайт. В этом случае в ходе выполнения первого и третьего подтестов будет активизироваться оптимизатор памяти.

dRAMatic v 8.1

Утилиту dRAMatic v 8.1 можно смело отнести к разряду классических оптимизаторов памяти. Она позволяет производить дефрагментацию оперативной памяти, хотя на самом деле под этим понимается просто высвобождение доступной памяти как в ручном, так и в автоматическом режиме. В последнем случае имеется возможность указать размер доступной памяти, по достижении которого оптимизатор автоматически начинает процесс ее высвобождения. Как выяснилось в ходе тестирования, утилита не слишком агрессивна и не представляет угрозы для активных процессов, которые активно утилизируют процессор. Так, отобрать страницы памяти у активных процессов в первом и втором подтестах утилита оказалась не в состоянии и ее автоматический запуск не реализовывался при достижении установленного барьера доступной памяти. В этом смысле данную утилиту можно было бы классифицировать как безвредную и бесполезную.

Clean RAM 1.21

Данная утилита отличается крайне простым интерфейсом и практически не имеет настроек. Автоматический режим работы утилиты не предусмотрен. Единственное, что можно сделать с ее помощью, — это в ручном режиме высвободить заданное количество доступной оперативной памяти. Кроме того, данная утилита показывает объем доступной памяти. Поэтому, если не нажимать на кнопку Clean RAM now (приступить к высвобождению памяти), утилиту Clean RAM 1.2 можно считать вполне безобидной.

FAST Defrag 2.3

Утилита FAST Defrag 2.3 поддерживает множество языков, в том числе и русский. Она работает как в ручном, так и в автоматическом режиме. В ручном режиме можно указать объем высвобождаемой памяти. Автоматический режим работы утилиты предусматривает несколько возможных настроек. Так, можно задать автоматическую очистку памяти при достижении заданного значения загрузки процессора (от 1 до 99%), при достижении заданного значения загрузки памяти (от 1 до 100%) и при достижении заданного значение оставшейся свободной памяти (от 1 до 25%). Кроме того, имеется возможность задать автоматическую очистку памяти при старте утилиты.

При тестировании утилиты FAST Defrag 2.3 с помощью бенчмарка PCMark05 выяснилось, что достичь объема оставшейся свободной памяти в 25% не удается, поэтому для автоматического запуска утилиты мы применяли критерий загрузки процессора, установив порог, равный 99%. Данный уровень загрузки процессора достигается во всех трех подтестах бенчмарка PCMark05, поэтому формально автоматическая очистка памяти должна была бы запускаться в каждом из подтестов. Но выяснилось, что утилита не такая уж и агрессивная и что при загрузке процессора в 100% она не может начать оптимизацию памяти. Поэтому действие этой утилиты никак не отражалось на результатах теста.

В целом же можно констатировать, что FAST Defrag 2.3 — это еще один совершенно бесполезный (правда, и безвредный) оптимизатор памяти.

FreeRAM XP Pro 1.52

Данную утилиту можно отнести к разряду продвинутых и весьма вредоносных оптимизаторов памяти.

Как и большинство оптимизаторов памяти, FreeRAM XP Pro 1.52 может запускаться как в ручном, так и в автоматическом режиме. Отличительной его особенностью является большое количество всевозможных настроек, создающих иллюзию полезности решения.

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

Для запуска утилиты в автоматическом режиме предусмотрена масса настроек, которые определяют критерии запуска. Так, можно настроить запуск оптимизатора через определенные временные интервалы или при достижении определенного значения доступной памяти. Кроме того, можно настраивать условия запуска в зависимости от загрузки процессора, временной интервал ожидания перед запуском оптимизатора и многое другое.

Как выяснилось в ходе тестирования, утилита ведет себя довольно агрессивно и способна начать оптимизацию памяти даже при 100% загрузке процессора. Естественно, что в этом случае производительность в тесте падает. Во-первых, оптимизатор памяти постоянно запускается, утилизируя процессор, а во-вторых, из-за высвобождения доступной памяти происходит постоянное вытеснение рабочих наборов активных процессов на жесткий диск и их последующая подкачка. Собственно, именно это и можно наблюдать по результатам теста, которые значительно ухудшаются.

Memory Optimizer 2002a

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

В ходе тестирования выяснилось, что утилита ведет себя весьма агрессивно и способна высвобождать память даже при 100% загрузке процессора. Естественно, такая агрессия в отношении активных процессов отрицательно сказывается на результатах теста.

MemTurbo 2

MemTurbo 2 — еще один оптимизатор памяти, который можно отнести к разряду безвредных. Оптимизатор обладает красивым графическим интерфейсом, а объем доступной памяти отображает в графическом виде. Данная утилита допускает работу оптимизатора в ручном и автоматическом режимах и предлагает большое количество настроек. В частности, предусмотрено множество настроек для автоматического запуска оптимизатора.

Как выяснилось в ходе тестирования, настройка утилиты на автоматический запуск по критерию достижения заданного размера оставшейся доступной памяти не сказывается на результатах теста. Дело в том, что, несмотря на выполнение критерия автозапуска, при 100% загрузке процессора оптимизация памяти не начинается. Поэтому данная утилита не оказывала влияния на действие активных процессов в ходе тестирования.

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

RAM Idle Professional 3.4

Утилиту RAM Idle Professional 3.4 можно отнести к разряду твикеров операционной системы, но, поскольку одно из центральных мест в ней занимает оптимизатор памяти, мы решили рассмотреть ее в нашем обзоре.

По возможностям настройки оптимизатор RAM Idle Professional 3.4 отличается от других тем, что в нем не предусмотрено ручного режима оптимизации. При настройке автоматического режима допускается указание критического размера доступной памяти. Кроме того, можно настроить автоматическую оптимизацию после старта программы через заданный интервал времени, а также автоматический запуск оптимизации через заданные временные промежутки. В последнем случае можно указать, какой объем памяти требуется освободить в процессе оптимизации.

Тестирование оптимизатора RAM Idle Professional 3.4 показало, что данная программа ведет себя довольно агрессивно. Оптимизация памяти происходит даже при 100% нагрузке на процессор, что, естественно, отрицательно сказывается на результатах теста.

Выводы

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

 

В начало В начало

КомпьютерПресс 6'2006