Нужен ли ramdisk при наличии ssd

Обновлено: 07.07.2024

Привет, GeekTimes! Совершенно невероятная мощь и производительность сокрыта в слове RAMDisk — Когда-то давно были даже специальные устройства, имитирующие на железном уровне работу рамдиска — Gigabyte i-RAM, например. Однако сейчас при доступе к огромному объему оперативки строить виртуальные диски становится еще проще. Что это дает? Ответ под катом.

  • Процессор: Intel Core i7-5960X
  • Материнская плата: ASUS Rampage V Extreme, Intel Socket 2011-3
  • Оперативная память: HyperX Savage DDR4-2666 128 Gb (8*16 Gb)
  • Системный SSD-накопитель: HyperX Predator PCI-E SSD 480 Gb
  • Видеокарта: AMD Fury X
  • Блок питания: Corsair AX1200i, 1200W
  • Операционная система: Windows 10 Профессиональная (64-bit)

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

Когда в вашем компьютере становится неприлично много оперативной памяти хочется максимально ее задействовать, и RAMDisk наиболее удачное применение. На текущий момент существует достаточно широкий выбор ПО для работы с RAMDisk, но я строить буду с помощью софта, который уже зарекомендовал себя с положительной стороны и собрал некоторое количество отзывов — DATARAM Ramdisk и ROG Ramdisk.
Первая софтина — условно-бесплатная, раньше можно было приобрести качественную лицензию с хорошей скидкой при покупке продуктов AMD.
Второй вариант — бесплатно поставляется с платами ASUS серии Republic Of Gamers. Коль скоро тестирование пройдет на базе материнской платы ASUS Rampage V Extreme/USB3.1 — грешно не оценить возможности этого ПО.




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



Тестировать RAMDisk оказалось совсем непросто, потому что многие программы не хотят иметь с ним дело, как например, привычный и удобный PC Mark 8 — он вовсе отказывается проходит тест на указанном разделе, выдавая ошибку. В данном случае, сказывается тот факт, что применение RAM Disk приведет к существенному увеличению результата и срабатывает система защиты от «нечестной игры», ведь рейтинги PC Mark 8 используются многими энтузиастами для сравнения производительности своих систем.

Crystal Disk Mark 5.1.2

Этот тест позволяет оценить работу накопителя в четырех режимах: линейное чтение/запись, чтение/запись блоков по 4К, линейное чтение/запись при глубине очереди 32 команды, чтение/запись блоков по 4К при глубине очереди 32 команды.


Crystal Disk Mark демонстрирует, что не все йогурты одинаково полезны, а именно ROG диск быстрее DATARam причем достаточно существенно.

Копирование файла с RAMDisk на другой RAMDisk весьма забавная процедура — все происходит почти мгновенно. Огромнейший видеофайл, скорость записи, которого на RAM Disk ограничена лишь скоростью чтения с USB источника, пролетает на сверхзвуковой скорости внутри оперативной памяти.



Копировать диск с SSD на RAM Disk тоже получается весьма быстро — скорость ограничена скоростью чтения с твердотельного накопителя, аналогично в обратную сторону — быстрее чем пишет SSD поработать не получится.

В качестве прикладного софта предлагаю сугубо субъективную оценку: работу с фотографиями в приложении DxO OpticsPro 10. В качестве задачи ставился экспорт 20 фотографий из RAW формата Canon (CR2) в полноразмерный JPEG с включенным шумодавом качества PRIME. Много в этой задаче зависит от процессора, но все же работа с хранилищем данных тоже важна.
В результате получается разница около 20 процентов по сравнению с экспортом на системный PCI-E SSD HyperX Predator. Много ли это? Да, вполне существенный прирост, потому что разгон процессора на 10% (300 МГц) изменял время обработки пакета всего на 1%.

Для игр воспользоваться всеми благами не получилось, вернее, все работает корректно, без вопросов, но FPS в двух весьма требовательных игрушках: Middle-Earth:Shadow of Mordor и Total War:Attila не вырос относительно результатов тестов игр, которые были установлены на PCI-E SSD.


Так для чего же нужен RAMDisk? Что можно ускорить с его помощью? Архиваторы (кому же понадобится так быстро сжимать/разжимать данные). Браузеры (быстрый доступ ко всему кэшу, который у вас есть). Экономия ресурса записи ячеек SSD (спорный момент при учете стоимости большого объема оперативной памяти). создатели контента, крутящие большие файлы в Adobe PS/AI и так далее (самый реалистичный пример).

Стоимость RAMDisk не относится к сильным сторонам «проекта». В пересчете на рубль за гигабайт SSD накопитель будет намного выгоднее, чем колоссальный объем оперативной памяти – SSD Kingston KC400 емкостью 128 Gb стоит от 3800 рублей, комплект памяти 128 Gb обойдется в 83 000 рублей. Зато скорость чтения/записи превосходит бюджетные, да и не только, SSD более чем в 10 раз, а кроме того большой обьем оперативной памяти еще никогда и никому не вредил. Разве что кошелек будет недоволен, но кто его спрашивает =).

Есть свои нюансы и недостатки: Небольшой объем для хранения информации, хотя если речь идет в основном о временном хранении медиафайлов при обработке, жаловаться не стоит. Второй нюанс: в случае, если нет платы ASUS ROG – возникает необходимость приобретения качественного программного обеспечения для создания RAMDisk, Третья особенность: энергозависимость — пусть каждый раз при выходе из Windows сохраняется образ RAMDisk, однако в случае внезапного пропадания питания — потери данных не избежать.

Спасибо за внимание и оставайтесь с Kingston на Гиктаймс!

А кроме того, мы подготовили для всех читателей нашего блога — специальный промокод geekpromo на приобретение памяти HyperX Savage DDR4 любой частоты и объема в сети Юлмарт со скидкой 10%. Вы можете воспользоваться промокодом до 24 июля 2016 года, делитесь информацией с друзьями!

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

Цифровой мир за последние несколько лет значительно ускорился. Геймеры, всегда находящиеся на самых передовых рубежах компьютерных технологий, чувствуют это одними из первых. Не случайно именно они отправили в отставку HDD, заменив устаревший стандарт на SDD с SATA интерфейсом. А некоторые уже пересели на M.2 NVMe SSD — самый быстрый способ общения с хранилищем файлов, если разговор идет о твердотельных дисках. Скорость обмена данными в 5,000MB/s уже никого не удивляет, и устройства со стандартом 7,000MB/s буквально на подходе. Цены при этом приятно радуют своей динамикой падения. Если очень захотеть, сегодня вполне можно найти M.2 NVMe SSD на 1TB за $100-150. Короче говоря, SSD крутые.

геймеры — это почти гонщики, в которых сидит жажда скорости, любопытство и ненависть к компромиссам!

Очень хорошо — скажете вы, — а зачем тогда менять относительно дешевые и быстрые SSD на что-то другое? Да и есть ли смысл париться, ведь в играх ничего важнее GPU нет? И вообще, разве есть что-то быстрее SSD сегодня?

Да, конечно, скорость считывания данных с диска — не самый критический показатель для игрового софта. И да, можно ничего и не менять. Но ведь геймеры — это почти гонщики, в которых сидит жажда скорости, любопытство и ненависть к компромиссам! Система должна загружаться за полсекунды, любимая игрушка — за секунду, и не миллисекунды дольше! Разве не так? Тем более, что купить эту штуку не получится. RAM Disk можно только создать.

Что такое RAM Disk? Сейчас объясню.

Ну и чем ваш RAM Disk лучше?

В некотором смысле RAM drive становится еще одним твердотельным диском, в котором нет никаких механических частей. Однако в сравнении с другими вариантами хранения информации, выигрывает в чистую за счёт скорости трансфера данных.

Одна плашка RAM на 2666 MT/s равна 21,328 MB/s или 21.328 GB/s. SSD под названием Sabrent Rocket работает на 5,000MB/s. Разница заметна невооруженным взглядом. Кажется, что игры с такого виртуального супер диска должны загружаться за секунды. Но, увы, в реальности этого не происходит, хотя сам процесс и завершается гораздо раньше, чем обычная загрузка с M.2 SSD, который, в свою очередь, опережает SATA SSD.

К примеру у меня есть 256GB RAM, и например 512GB SSD диск.

Есть ли возможность получить диск ну скажем на 200GB RAM + 512GB SSD?

В идеале сначала чтобы использовалась RAM, а если не хватает места, то пишет на SSD.

Надежность хранения само собой неважна. Нужно вот такое временное хранилище.

Самое главное, чтобы итоговое хранилище по размеру было суммой RAM (например куска в 200GB) и SSD.

Погуглил немного нашел проект mergefs. Наверное вариант tmpfs + mergefs мне подойдет.

Поделитесь вашими соображениями ))


Создай в рам в тмпфс файл размером 200 Гб, потом из этого файла и устройства ssd создай либо raid 0

Либо группу томов lvm.


А зачем вам такие скорости? Я бы посмотрел в сторону lvm, там можно делать из нескольких PV один раздел.


А почему нет? Попробовать выделить блочное устройство zram и каким нибудь софтовым рейд-массивом прикрутить к ssd. Только я ноль в рейд-массивах, слышал только что всякие btrfs и прочие умеют располагаться на нескольких блочных устройствах.

А, точно. Извиняюсь. tmpfs, которая свопится на ssd будет иметь похожие характеристики. Хотя сам процесс свопинга не слишком эффективный по цпу, было бы неплохо вынести балансировку память/диск этого массива кому нибудь другому.

kirill_rrr ★★★★★ ( 29.04.21 18:15:55 )
Последнее исправление: kirill_rrr 29.04.21 18:18:41 (всего исправлений: 2)


Ну использование памяти как блочное устройство и работать там с файлами на ФС тоже по процессору будет не эффективно. Может задержки будут даже больше чем у nvme.

задержки будут даже больше чем у nvme

ты чё-то подупоролся


tmpfs, по описанию, умеет сбрасывать лишнее в swap раздел/файл. Я не видел такого её использования в реальности, но такой подход, на мой взляд будет быстрее чем любые ФС прокинутые через FUSE (mergefs в их числе) и менее костыльнее чем любые варианты raid’ов/lvm.

Ещё из плюсов tmpfs – она не юзает page cache, в отличии от обычных файловых систем, а значит в оперативке не будет лишних копирований информации.

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

Создай большой swap раздел/файл на SSD (в размер того, сколько ты хочешь использовать места) . Подключи его как системный SWAP. Создай tmpfs раздел на размер того, сколько ты хочешь отдать оперативки + swap. попробуй запустить что-то что требует много оперативки и заполнить tmpfs данными сверх свободной оперативки хотябы в 2 раза. По идее система должна активно свопить данные и не вызывать OOM у запущенного приложения которому нужно много оперативки

chaos_dremel ★★ ( 29.04.21 19:23:09 )
Последнее исправление: chaos_dremel 29.04.21 19:25:57 (всего исправлений: 2)


Задержки при работе с блочным устройством в памяти будут наносекундными.

Но если это zram с бедленным алгоритмом сжатия, тогда да, будет медленное сжатие. Но ведь алгоритм указывается для каждого отдельного устройства. И там были какие то неэффективные, но ПЦ реактивные. А ещё блы какой то несжатый ram-диск.


Я не видел такого её использования в реальности, но такой подход, на мой взляд будет быстрее чем любые ФС прокинутые через…

Я использую этот подход в реальности. Меня в принципе такая конфигурация устраивает из за простоты и моих невысоких требований по обмену данными, но на самом деле она медленная.

Дело не в самой tmpfs, она действительно быстрей любой fs. Дело в однопоточной подсистеме свопа, которая делает кучу лишних действий, но при этом совершенно не предназначена для оптимизации размещения файлов между оперативкой и диском. И ещё на подсистему свопа линукса жалуются что она медлительна. Я согласен, у меня 1 ядро цпу RPi3 может пережевать не больше 10-15 Мб/сек обмена данными с своп-ssd. т.е. всё упирается далеко не в скорость диска.

Поэтому я и предполагаю, что если некий софтовый рэйд-массив типа btrfs, zfs или lvm умеет балансировать данные между устройствами с разной скоростью, то он справится куда лучше связки tmpfs+swap. Но вообще тесты нужны. Они кстати не сложные, если освоить настройку этих самых софтовых рэйдов.

kirill_rrr ★★★★★ ( 29.04.21 19:41:51 )
Последнее исправление: kirill_rrr 29.04.21 19:44:09 (всего исправлений: 1)


У тебя есть тесты, где рандомное чтение с 100-200 гигов файла в памяти будет наносекундным? У меня все серваки теперь на винде, проверять в vm не хочется.


Ну свопинг как раз можно тюнить. У топикстартера совершенно другие объёмы памяти, и поэтому даже дефолтные настройки watermark_scale_factor будут сбрасывать данные в swap большими кусками с почти линейной записью, что крайне положительно будет сказываться на общей производительности.

P.S. Вы, кстати, не пробовали тюнинговать этот параметр на RPi3? А то дефолтные настройки на 1Гиге оперативки дают около 1 метра сбрасывания в своп за раз


Я ничего не путаю, если запрос блока происходит нафизическое устройство, то он сначала должен дойти до диска по шине, обработаться там, а потом запошенный блок должен по шине скопироваться в оперативную память через механизм DMA?

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

kirill_rrr ★★★★★ ( 29.04.21 20:02:21 )
Последнее исправление: kirill_rrr 29.04.21 20:07:08 (всего исправлений: 1)


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


Просто в nvme каждое ядро может послать запрос, а каналов памяти ограниченно, плюс сторадж отдаст ровно столько, сколько попросили, а память отдаст весь чанк из которого ещё вытащить нужные данные какое-то количество циклов потратить нужно.

Я то сам никогда не тестил, мало ли.


tmpfs (RAM) + SWAP в ZVOL на ZFS.

iZEN ★★★★★ ( 29.04.21 20:27:26 )
Последнее исправление: iZEN 29.04.21 20:27:36 (всего исправлений: 1)


А разве независимо от каналов и ядер данные с диска не должны сначала лечь в оперативку, а потом быть прочитны оттуда собственно кодом на цпу? Ну и что страничное обращение к оперативке, что блочное к дискам. По слухам диски сейчас физически тоже по 4Кб хранят.


Не, pci же напрямую в процессор идёт. Ну по крайней мере если воткнуть nvme в такую линию


Но ведь механизм DMA, т.е. когда диск пишет в оперативку без прямого участия цпу. Или он пишет сразу в кеш цпу? В любом случае, это не для большого i/o.

таблетки принимай. если было бы так, как ты описываешь, от оперативки бы уже отказались в пользу nvme. память на порядки меньшую задержку имеет

tmpfs не позволит тебе ограничить размер фс на уровне фс т.е. если тебе надо из 256гб выделить 250 то ты должен сам ограничивать запись ибо если ты зашлешь в неё 256 то они все … влезут, но рам кончится при этом.
В твоём случае, в идеале, разделить запись программно на уровне писальщика

очень интересная идея, а для tmpfs сложно ограничить объем, после которого она начинает лезть на SSD?

я так понимаю параметр swap и указывает лезть в своп

mount -F tmpfs [-o size=number] swap mount-point

не получится ли так, что весь велосипед будет медленнее чем LVM, из-за того, что не будет доступен быстрый RAM, сожрется все под tmpfs

очень интересная идея, а для tmpfs сложно ограничить объем, после которого она начинает лезть на SSD?

как минимум cgoups можно приложению указать лимит memory.high в т.ч. на tmpfs влияет вроде бы, но чет не то все равно

doc0 ★ ( 29.04.21 22:34:40 )
Последнее исправление: doc0 29.04.21 22:41:41 (всего исправлений: 2)


Для драматичности я сжульничаю и упрощу.

Сейчас я пишу с ноутбука на скайлейке с DDR3L-1600, где пропускная способность 12.8Gbps, а рядом у меня стоит десктоп с 960 Evo со скоростью последовательного чтения 3.3Gbps. Если драматизировтаь ещё сильнее, мы возьмём 980 PRO с последовательным чтением уже на 7Gbps, и будем сравнивать это в лоб.

Это бред. Но, тем не менее, даже если бы SSD стали быстрее RAM, твоё утверждение всё равно не верно.

от оперативки бы уже отказались в пользу nvme

SSD — расходник, расчитанный на 300-600 циклов перезапили, а рама почти вечная.

WitcherGeralt ★★ ( 29.04.21 23:15:59 )
Последнее исправление: WitcherGeralt 29.04.21 23:32:16 (всего исправлений: 3)


В идеале сначала чтобы использовалась RAM, а если не хватает места, то пишет на SSD.

Возможный ответ, хотя и не совсем то:

ARC - это кэш ZFS, расположенный в оперативной памяти, L2ARC - его продолжение (Layer 2, второй уровень), но на более медленном, чем оперативная память носителе (но при этом обладающим бОльшим объемом) и в то же время, более быстром, чем диски самого массива. Обычно, в роли носителей для L2ARC используются SSD диски, так как их скорости чтения/записи с легкостью превосходят последние модели SAS.

Если таы вместо кеширующего SSD поставишь устройство ZRAM то будет примерно то, что ты хотел.
Причём надо учитывать то, что ZFS не единственная система которая так умеет и так же то, что после ребута весь ZFS пул часть кеша которого пропадёт скоре всего превратится в труху.

В целом то что ты описываешь по описанию более всего напоминает LLVM когда несколько разделов на разных накопителях объёдиняются в один LLVM раздел.





На данный момент времени оперативная память является всё ещё самым быстрым носителем данных.

Кому пригодится RAM-диск

Другое дело, что не во всех случаях использования такого диска видно ускорение работы.

Сильно заметны положительные изменения:

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

С кодировкой видео не работаю, а вот в Фотошопе сразу заметил сокращение времени открытия и сохранения больших изображений.

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

Такой виртуальный диск только украдёт кусок её и обломает весь кайф (если у Вас не 32, 64 или 128 Гб этого добра).

Сколько памяти выделить под RAMDisk

Тут очень важны:

Небольшое отступление от темы статьи, но тоже ответ на многочисленные вопросы.

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

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

Представляете объём запасной простаивающей памяти? К тому же не всем понравится путаться в Проводнике среди десятка накопителей, правда?

Может чего-то не понимаю? Напишите своё мнение по этому вопросу в комментариях.

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

ПОЛЕЗНОЕ ВИДЕО

Читайте также: