Оперативная память: разрушаем мифы

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

 


1. Что такое оперативная память и зачем она нужна?

Оперативная память (или RAM — Random Access Memory, или ОЗУ — Оперативное Запоминающее Устройство) — энергозависимая память, используемая для временного хранения команд и данных, необходимых для вычислений, которые делает процессор (или процессоры) компьютера. Более точно и подробно об этом рассказано в Википедии, а я сосредоточусь на собственно проблеме свободного места в оперативной памяти.

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

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

В Windows запущенные программы физически могут располагаться не только «в платах оперативной памяти», но и на жестком диске в файле pagefile.sys. Этот файл называется «файлом подкачки» или «свопом» (от англ. swap).

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

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

Сравнение скорости оперативной памяти и жесткого диска

Чтобы в файл подкачки сбрасывались только ненужные данные, в Windows работает Менеджер памяти. Работает вполне успешно, благодаря чему на компьютере с 512 Мб ОЗУ можно запускать программы, занимающие более гигабайта памяти. Типичный пример — современные версии Adobe Photoshop, 3DS Max и многие другие программы для сложных вычислений. Конечно, при таком малом количестве оперативной памяти программы будут тормозить, однако работать в них худо-бедно, но возможно.

2. Что же делают оптимизаторы памяти?

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

Типичный пример программ, требующих большие объемы ОЗУ — игры. Если игре требуется 2 гигабайта оперативной памяти — с этим ничего поделать нельзя. Без требуемого объема RAM играть будет проблематично из-за низкой частоты кадров — игра будет тормозить из-за того, что часть данных будет располагаться на медленном файле подкачки. Оптимизаторы оперативной памяти создают такой же негативный эффект - после освобождения памяти программам выделяется памяти меньше, чем им того требуется, из-за чего опять-таки начинаются «тормоза».

Замечание №1: Я не утверждаю, что частота кадров в играх напрямую зависит от объема оперативной памяти. Установив больше оперативной памяти в компьютер, удастся повысить производительность только в тех программах, где действительно важен объем ОЗУ без оглядки на другие более важные параметры: частота процессора, характеристики видеокарты, частота оперативной памяти, скорость жесткого диска и т.д. 

Замечание №2: С программами случаются ошибки под общим названием «утечка памяти», когда программа беспричинно «разрастается» и занимает всю память без надобности, но в таком случае надо требовать от разработчиков этой программы исправления ошибки, а не освобождать память оптимизаторами.

Как работают оптимизаторы памяти

Программы оптимизации памяти (названия у них могут быть разные — SuperRAM, FreeMemory, Memory Management SuperProMegaEdition и т.п. ) могут освобождать память несколькими способами, но все они завязаны на принципе обмана Менеджера памяти Windows:

  1. Программа вызывает специальную функцию EmptyWorkingSet(), которая заставляет все программы как можно больше выгрузить «себя» в файл подкачки.
  2. Программа начинает бесконтрольно разрастаться в памяти, сообщая Менеджеру памяти Windows о том, что ей это нужно для дела (я говорю метафорами, но вообще-то дело обстоит именно так), в результате чего Менеджер памяти выбрасывает как можно больше программ на жесткий диск в файл подкачки.

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

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

Вывод №1: освобождение оперативной памяти оптимизаторами идет только во вред и снижает производительность.

Вывод №2: нельзя судить о скорости работы программы по тому, сколько места она занимает в оперативной памяти.

Вывод №3: если программа занимает много места в оперативной памяти, значит — она оперирует большими объемами данных. Помочь ей «думать» быстрее можно только увеличив объем оперативной памяти, т.е. поставив в компьютер побольше плат ОЗУ. Но это не поможет, если остальные характеристики ПК не соответствуют требованиям.

Чтобы не быть голословным, вот ссылка на аналогичные выводы с объяснением работы Менеджера памяти Windows: сюда.

3. Как надо оптимизировать память?

Самый очевидный способ повысить производительность компьютера — закрыть ненужные программы. Второй — установить побольше планок (плат) оперативной памяти, чтобы программы «чувствовали себя более вольготно» и работали пошустрее. Других способов ускорения компьютера, непосредственно связанных с оперативной памятью, нет.

Еще раз повторюсь: оптимизаторы памяти — бред с целью заработать деньги на доверчивых пользователях. Такой же глупостью является и подстройка «скрытых настроек памяти» в Windows, так как там все уже настроено наиболее оптимально после тестирования на большом количестве компьютеров.

4. О свободной оперативной памяти в Windows Vista, 7, 8

На форумах я часто вижу возмущенные крики (цитирую): «Поставил Windows 7 (8), посмотрел Диспетчер задач, а там говорится, что занято полтора гигабайта или вся оперативная память! Windows 7 (8) жрет очень много памяти!»

На самом деле все обстоит совсем не так и причин возмущаться нет. Совсем наоборот: в современных операционных системах свободная память отводится под кэш. Это происходит преимущественно благодаря функции SuperFetch. Благодаря кэшу программы запускаются быстрее, так как вместо обращения к жесткому диску данные загружаются из оперативной памяти (см. картинку выше, разница в скорости работы жесткого диска и ОЗУ написана жирным шрифтом). Если какой-то программе понадобиться больше оперативной памяти — кэш моментально сократит свой размер, уступив ей место. Подробнее об этом написано на Хабрахабре.

Выводы:

  1. Память очищать не нужно, потому что каждый байт объема используется максимально эффективно.
  2. Забудьте про оптимизаторы памяти — они не оптимизируют ничего, мешая работе кеша и прочим функциям Windows.
  3. Если занято много оперативной памяти сразу после включения компьютера — это абсолютно нормально и не является причиной медленной работы программ.

Также существует миф, что при использовании Windows Vista, 7 и 8, кеш мешает программам. Якобы «когда программе нужно больше оперативной памяти, оказывается, что она забита кешем, возникают тормоза». На самом деле это неправда. Кеш «улетучивается» мгновенно и программе сразу становится доступен нужный объем оперативной памяти.

5. Изменение размера файла подкачки, его перемещение или отключение

Тоже довольно распространенные, в некотором роде вредные, советы. Об этом есть хорошая статья на Хабрахабре. Я лишь приведу наиболее важные выводы той статьи, добавив свои, из личного опыта:

  1. Изменять размер файла подкачки нет особого смысла. Теоретически, в идеале надо выставить размер файла подкачки не больше того, который требуется запущенным программам, но проблема в том, что даже если вы используете одни и те же программы одних и тех же версий день ото дня,  ситуации бывают разные (вы можете запустить в браузере одну вкладку, а можете сотню, каждую с открытой игрой на Flash) и требования к доступной памяти будут разные — предполагаемый «идеальный» размер файла подкачки будет меняться от минуте к минуте. Поэтому смысла изменять размер файла подкачки нет, так как «идеальный размер» файла подкачки меняется постоянно. Проще оставить тот размер, который определила система, и не морочить себе голову.
  2. Если отключить файл подкачки на системном разделе (при этом файл подкачки может использоваться на других разделах), не будет работать дамп памяти при ошибках BSOD. Поэтому, если система будет показывать «синий экран смерти», для выявления причины сбоя придется сначала включить файл подкачки на системном разделе, затем ждать повторения сбоя. Есть только одна ситуация, когда целесообразно отключать файл подкачки на системном диске (лишаться возможности диагностики) и включать на другом — если в компьютере установлено два и более физических жестких диска. Перемещение файла подкачки на другой физический диск может снизить количество подтормаживаний из-за распределения нагрузки на диски.
  3. Отключение файла  подкачки (полное, т.е. на всех дисках) вызовет неприятные глюки, потому что встречаются программы, которым частенько требуется писать данные в файл подкачки ввиду специфики своей работы. Программа может работать с громадным количеством данных, часть из которых, возможно, придется сбросить в файл подкачки. Лично я сталкивался с проблемами при рендеринге сложных сцен с помощью V-Ray и при работе в программе GIMP — эти программы довольно прожорливы до оперативной памяти, поэтому при отключенном файле подкачки работать становиться невозможно.
  4. Перемещение файла подкачки на RAM-диск (виртуальный диск, находящийся в оперативной памяти, поэтому очень быстрый) нецелесообразно. Во-первых, (это самое главное) при включении компьютера RAM-диск может инициализироваться позже того момента, когда системе понадобится файл подкачки, может случиться что угодно — от BSOD до спонтанных подтормаживаний системы (столкнулся с перечисленным, когда проверял эту идею). Во-вторых, размер такого файла подкачки будет небольшой — память-то не резиновая. Возникает выбор — либо нехватка ОЗУ при большом файле подкачки в памяти, либо глюки программ при нехватке места в маленьком файле подкачки. Золотой середины нет, т.к. компьютер может выполнять совершенно разные задачи. Исключение, когда можно создать большой файл подкачки без нехватки памяти — если у вас 16 Гб ОЗУ и больше. Однако при таком объеме файл подкачки используется с минимальной активностью и держать его в ОЗУ смысла нет. В-третьих, прироста производительности не будет — поищите отзывы в интернете.
Примечание по третьему пункту, который до редактирования статьи был не совсем понятен: очевидно, что программы обычно не пишут данные в файл подкачки сами, за них это делает ОС (но бывают исключения). Как бы то ни было, отключенный файл подкачки нельзя рассматривать как часть нормального режима работы компьютера.

6. Очистка файла подкачки

В файле подкачки pagefile.sys может храниться разнообразная информация конфиденциального характера — например, картинки из недавно открытых в браузере страниц. Это нормальный процесс, обусловленный особенностями работы программ в Windows. При желании можно включить  очистку файла подкачки при выключении компьютера. Однако производительности этот твик никоим образом не прибавит, наоборот — это может серьезно замедлить выключение и перезагрузку компьютера.

Так что, если вы не работаете с конфиденциальными данными, лучше не включать очистку pagefile.sys.

7. Доступность более 4 Гб оперативной памяти в Windows

Интернет буквально завален рассуждениями пользователей о том, почему в битной Windows доступно 3,5 Гб оперативно памяти вместо, например, установленных 4 Гб. Было придумано множество теорий, мифов, легенд. Например, считают, что это ограничение, сделанное Microsoft, которое можно снять. На самом деле это отчасти правда — принудительные ограничения действительно есть. Только снять их никак нельзя. Это обусловлено тем, что в 32-разрядных системах драйвера и программы могут нестабильно работать при использовании системой больше четырех гигабайт оперативной памяти. Для 64-битных Windows драйвера очень тщательно тестируют, чтобы такой нестабильности не было, поэтому вышеупомянутого ограничения там нет.

В 32-битной Windows доступно только 4 Гб оперативной памяти, в 64-битной такого ограничения нет и доступно гораздо больше оперативной памяти — до 192 Гб.

Но не все так просто. Windows 7 Начальная (Starter) (и ее аналог у Vista) не видит больше 2 Гб оперативной памяти. Это тоже ограничение, только не по причине нестабильно работающего софта. Дело в том, что Windows 7 Начальная распространяется исключительно на маломощных нетбуках, по факту практически бесплатно, поэтому необходимо было дистанцировать ее от более дорогих изданий: Домашней базовой, Домашней Расширенной, Максимальной и т.д.  Часть ограничений Windows 7 Starter можно снять, но только не ограничение на два гигабайта оперативной памяти.

Что касается остальных 32-битных изданий Windows XP, Vista, 7 и Windows 8: на практике пользователю доступно еще меньше — 3,5 Гб. Все дело в том, что драйвера тоже имеют свои адреса, которые и лишают Windows доступа к части памяти в 512 мегабайт. Существует патч, позволяющий «задвинуть» такие адреса за пределы четырех гигабайт, чтобы система стала использовать хотя бы 4 Гб оперативной памяти, но это практически не имеет смысла:

  • Как я писал выше, драйвера и программы не смогут корректно работать после такого патча, так что система может начать зависать, выдавать ошибки, т.е. вести себя непредсказуемо.
  • Даже если в компьютере будет установлено плат оперативки на 8, 16, 32 Гб или больше — это никак не поможет их задействовать в 32-битном режиме операционной системы. Какой смысл от доступности допольнительных 512 Мб оперативной памяти, если система станет нестабильной? Вот наглядный пример. Все равно придется ставить 64-битную Windows.

То, что видно 4 Гб оперативной памяти, не значит, что ее можно эффективно использовать. Проблема в том, что 32-битная Windows не может грамотно выделить процессу (программе) более 2 Гб физической оперативной памяти. Об этом многие забывают — и зря. Неважно, сколько оперативной памяти в компьютере, если программе нельзя дать больше 2 Гб ОЗУ. Пример: если пользователь работает в 32-битной Windows с Photoshop на компьютере с 4 Гб оперативной памяти — Фотошоп сможет задействовать всего лишь два гигабайта максимум, остальные данные скинет в файл подкачки и начнет тормозить. С играми то же самое.

На самом деле, только в 64-битной операционной системе программы могут задействовать весь потенциал оперативной памяти объемом больше двух гигабайт. И то не все, а только рассчитанные на использование больше 2 Гб ОЗУ. Ситуацию опять-таки можно исправить с помощью соответствующих патчей в 32-битной Windows, но это работает далеко не со всеми программами. Повторюсь: только 64-битная Windows и 64-битные программы, запущенные в ней — единственный выход задействовать весь потенциал большого объема ОЗУ.

Между тем, с серверными версиями Windows ситуация иная: там доступны гораздо большие объемы оперативной памяти даже в 32-битных версиях ОС. Почему так происходит, рассказано в статье Преодолевая границы Windows: физическая память от Марка Руссиновича.

Также есть моя заметка Какую выбрать систему — 32 бит или 64? в статье про установку Windows 7 для новичков.

8. Мифы: 64-битная Windows 7/8 потребляет много памяти, ей нужно 4 Гб оперативной памяти, и вообще она прожорливый монстр

Как говорится, «у страха глаза велики». На самом деле разница между Windows обеих разрядностей не так существенна, как кажется. Например, 64-битная Windows 7 может работать даже на компьютере с 256 Мб ОЗУ, хотя тормозить будет нещадно (как и 32-битная версия):

Windows 7 на компьютере с 256 Мб оперативной памяти

Windows 7 на компьютере с 256 Мб оперативной памяти.

Чтобы показать разницу в требованиях к оперативной памяти 32-битной и 64-битной Windows, я установил Windows 7 обеих разрядностей:

Потребление памяти Windows 7 x86 и x64

Потребление памяти Windows 7 обеих разрядностей

Обе Windows были установлены  в одинаковые виртуальные машины с 2 Гб ОЗУ в каждой. Из программ установлены только VMWare Tools (использовалась пробная версия виртуальной машины VMWare). В 32-битной Windows 7 было выделено 606 Мб, в 64-битной — 766Выделенная память — это вообще вся занятая программой и системой виртуальная память (в ОЗУ и файле подкачки). Занятой оперативной памяти будет меньше, в зависимости от запущенных программ.

У вас на свежеустановленной системе могут быть несколько другие значения, потому что системы могут быть разных изданий, с разными драйверами и т.п. Но итог вседа будет один:

64-битная Windows 7 (и 8) занимает всего лишь на примерно 150 Мб больше оперативной памяти, чем 32-битная версия.

Если обратиться к официальной странице с системными требованиями Windows 7  и Windows 8, то можно увидеть, что для 32-битной Windows 7/8 требуется компьютер с 1 Гб оперативной памяти, а для 64-битной — 2 Гб минимум. Действительно, если использовать 64-битную Windows 7/8 на компьютере с 1 Гб ОЗУ, свободной памяти останется мало, что снизит производительность компьютера из-за явной нехватки оперативной памяти. В масштабах 2 гигабайт потеря 0,15 части гигабайта уже будет малозаметна, зато начнут проявляться преимущества 64-битной системы и 64-битных программ.

Вывод: на компьютере с ОЗУ меньшим, чем 2 Гб, выгоднее устанавливать 32-битную Windows 7/8. На компьютере с количеством оперативной памяти больше 2 Гб (или равном) вполне можно устанавливать 64-битную Windows 7/8.

О преимуществах 64-битной версии Windows 7/8 рассказано выше, так что рекомендую поскорее переходить на нее.

9. Увеличение оперативной памяти с помощью ReadyBoost

Здесь уже Microsoft сама внесла путаницу, рассказывая на своем официальном сайте о том, что с помощью ReadyBoost можно решить проблему с нехваткой оперативной памяти по принципу «вставил флешку и расширил объем ОЗУ». На самом деле это не так. При работающей технологии ReadyBoost на флешке создается специальный файл, куда скидывается часть файла подкачки и наиболее частоиспользуемые файлы. Таким образом, некоторые файлы открываются быстрее, что отчасти устраняет проблему «подвисаний» компьютера, но, к сожалению, не повышает производительность системы и тем более не увеличивает объем оперативной памяти. Просто позволяет загружать некоторые программы быстрее и устраняет торможения, связанные с чтением на медленный жесткий диск компьютера.

Подробнее об ReadyBoost можно почитать здесь.

10. Подводим итоги

  • Оптимизаторами оперативной памяти пользоваться нельзя.
  • Трогать настройки памяти — тоже, даже если в программе есть множество подсказок, дающих ощущение контроля над ситуацией.
  • Свободная оперативная память в Windows Vista/7/8 используется во благо, лучше не трогать этот функционал — все хорошо работает, улучшить практически ничего нельзя.
  • Если у вас тормозит компьютер, то это скорее всего не из-за занятой памяти (она занята полезным кешем), а из-за перегрева.

Автор: Дмитрий Глашков (dmitri@glashkoff.com)

При цитировании и использовании данного материала ссылка

на glashkoff.com и указание автора обязательны.