Развеиваем мифы: Файл подкачки на RAM-диске
17 Сентября 2016

Ramdisk для ускорение компьютераНесмотря на повсеместное распространение SSD накопителей, а также благодаря дешевизне модулей памяти, идея RAM-диска в некоторых случаях не потеряла актуальности - виртуальному диску, расположенному в оперативной памяти компьютера и обеспечивающему феноменальные скорости чтения и сегодня найдется применение. Однако не всегда использование данной технологии рационально, и в данной статье я расскажу о самом нелепом применении RAM-диска, которое мне приходилось встречать, – расположении на нем файла подкачки.

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

Статья: Ramdisk – виртуальный диск для ускорения работы компьютера 

Теперь расскажу более подробно с картинками. Весь доступный для использования ресурс памяти компьютера условно состоит из двух частей – физической памяти, то есть модулей, установленных на материнской плате, и файла подкачки (Свопа – от англ. Swap-file), который используется при нехватке физической памяти.

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

Ресурс памяти
Подкачка расширяет возможности физических модулей

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

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

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

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

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

Пример. В компьютере 6 Гбайт оперативной памяти и 2 Гбайт в подкачке на жестком диске. Суммарно под систему и программы выделено 8 Гбайт. Файловый кэш может быть выделен только в пределах физических 6-ти Гбайт. Теперь мы хотим избавиться от дисковой подкачки на винчестере и перенести ее на RAM-диск. Создаем виртуальный диск, равный по размеру Свопа.

Итого получается: 4 Гбайт свободной памяти + 2 Гбайт под Swap-файл. Суммарный размер под систему и программы – 6 Гбайт. Только теперь кэш может быть выделен в пределах 4 Гбайт (а не 6-ти, как ранее). Если хочется избавиться от дисковой подкачки, например, при наличии большого количества памяти, то проще вообще отключить Своп.

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

Расширение памяти вместо подкачки
Если если хочется ускорить систему, поставьте больше памяти,
а не занимайтесь ерундой с переносом подкачки на рамдиск.

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

Получайте анонсы новых статей прямо на почту

 

Комментарии 

Коммент от
Сен 19, 2016
Комментатор
eman
"Это верхняя степень идиотизма, идущая от полного непонимания того, как работает операционная система."
Какая OS?
Вы о zRAM слышали? RAM-диск с компрессией. https://ru.wikipedia.org/wiki/ZRam
Коммент от
Сен 19, 2016
Комментатор
pc-hard.ru
Речь о Windows.
Что касается zRam, то выигрыш будет лишь при стратегии принудительного использования подкачки при большом кол-ве свободной физической памяти. Такой подход встречается довольно редко. Можете сами убедиться, free -m вам с помощь. Попробуйте забить оперативку до максимума и посмотрите размер подкачки. Так что проект, хоть и существует, но используется только для ряда весьма специфических задач.
Коммент от
Ноя 11, 2016
Комментатор
Алексей
Я вынужден использовать 32-битную систему при том, что имеются 8 ГБ памяти.
Причина: плата управления станком ЧПУ, на которую в природе существуют только 32-битные драйвера.
Думаю, что в данном случае размещение в верхних 4 ГБ памяти рамдиска с файлом подкачки - хорошее решение (правда, ещё не пробовал своими руками)
Коммент от
Ноя 11, 2016
Комментатор
pc-hard.ru
Такое использование разумно. Некая попытка хоть как-то задействовать "потерянную память". Но это все же костыль для преодоления ограничений старых драйверов. Тем более рам-диск, умеющий сам управлять памятью в недоступных системе областях, нужно еще поискать и потестировать.
Коммент от
Фев 27, 2017
Комментатор
Дмитрий
Автор статьи забыл о нескольких моментах:
1. В ОС Windows крайне нежелательно отключать файл подкачки вообще, хоть даже если у вас 128Гб физической ОЗУ.
2. Есть некоторый софт (не редкий), который ломится в своп при любом кол-ве ОЗУ, например Firefox (можно проследить по ошибкам страниц), и если у вас своп "тугой" (расположен на НDD), то снижение производительно сти системы вам обеспечено (подкачка на рам-диске решает эту проблему)
3. Если памяти 16+ Гб, то отдать 1-2Гб из них под подкачку на рам-диске - вполне разумно. Вы хоть раз сами попробуйте сделать это, и увидите, как увеличится РЕАЛЬНАЯ производительно сть ОС (к примеру win7 установленная на HDD с 16Гб ОЗУ - загружается на 40% быстрее после переноса свопа размером 2Гб на рам-диск размером 2.4Гб, несмотря на то что свободная ОЗУ уменьшилась на 2.4Гб)
4. Снижение дисковых операций прибавляет ~10% производительно сти в специфических приложениях, например в майнинге (софт-майнеры при загрузке CPU из-за дисковых операций со свопом каким-либо фоновым процессом всего на (!) 1%, сразу снижают свою производительно сть на ~5-10% из-за L3 cache poisoning)

Безусловно, тут важно отметить, что программно рам-диск не должен быть кривым, и уметь загружать свой драйвер одним из первых (к примеру, известный RAMDisk от qsoft это умеет), а не после того, как ОС начнет ломиться "вникуда", пытаясь записать pagefile.sys.

Так что, статья в целом ближе к истине, но не без оговорок.
Коммент от
Фев 27, 2017
Комментатор
pc-hard.ru
1) Никто так и не смог адекватно объяснить чем 64RAM+64SWAP лучше, чем 128RAM, и почему на последней нежелательно отключать подкачку, по сравнению с первой. Чем она хуже 64RAM+64SWAP? В чем нежелательность ?
2) Это скорее проблема такого софта. Это не его дело, откуда брать ресурс. Этим занимается операционная система, и именно она решает, как использовать предоставленные ресурсы. А дело софта - эти ресурсы утилизировать. Если у меня вообще свопа нет, Firefox вообще не будет тормозить (пользуясь вашей логикой).
3-4) Если требуется скорость, то лучше поставить SSD - я проводил тестирование при использовании кэша браузеров на SSD и на Рам-диске. Разница на глаз не заметна. Снижение производительно сти будет только при использовании HDD. С разумной точки зрения (для вашего примера), не лучше ли будет 8Гиг RAM + SSD, чем 16гиг RAM + HDD.

Хотя некоторые проги типа фотошопа все же используют свою собственную подкачку - в виде файла на диске. Но это уже больше для надежности и удобства (например большая очередь истории)

Спасибо за объемный и интересный комментарий.
Коммент от
Фев 27, 2017
Комментатор
Нищеброд без SSD
Почему в окнах лучше не отключать своп, вы серьёзно? Да половина софта, работающего в виндовой среде ломятся в своп, при 10+ гб свободной физ. памяти, и системе обычно побоку куда и откуда берутся ресурсы, я согласен что это проблема софта, но и в самой винде при отключении подкачки есть предупреждение о возможной потере стабильности/данных. Имхо, при отсутствии ssd вынос свопа в рамдиск очень упрощает жизнь, особенно если ОЗУ хватает, да и разгрузить хард поможет.
Коммент от
Фев 27, 2017
Комментатор
pc-hard.ru
В половине? Примеры в студию.
Вот в этой статье http://pc-hard.ru/softarticles/52 было написано в самом конце про такие примеры (и в комментах). Но по факту это обычно старые версии прог и игрух.
А что, кстати, там с этим FireFox'ом? Он некорректно работает без подкачки? Как это проявляется.
Коммент от
Фев 27, 2017
Комментатор
Нищеброд без SSD
Видеоредакторы бесплатные в большинстве своем пытаются писать непонятные данные в своп при работе, если своп отключен - пиши привет. Игрухи - да, много приятного играбельного старья тоже обращается к ЖД в процессе работы. И да, речь не идёт о соотношении ram:swap 1к1, а о выносе пары гигов в оперативу, чтобы весь этот глючный софт сбрасывал туда все что хочет и не ругался.
З.Ы.: когда нибудь я перейду на ssd и забуду про все это как про страшный сон
Коммент от
Июн 13, 2017
Комментатор
Нищебротт
Вы слышали о 32-разрядных приложениях, любящих кешировать все и вся? ММОРПГ некоторые, например. Избегайте резких высказываний и клинических диагнозов, которые ваш собственный интеллект не в состоянии себе позволить.