Оперативная память дешевая и намного быстрее SSD. Это просто изменчиво. Так почему же на компьютерах нет ОЗУ МНОГО, и при включении питания загружайте все в ОЗУ с жесткого диска / SSD и просто запускайте все оттуда, предполагая, что в действительности нет необходимости сохранять что-либо вне памяти? Разве компьютеры не будут намного быстрее?
Конечно, текущая операционная система может вообще не поддерживать это, но есть ли причина, по которой ОЗУ не используется таким образом?
Ответы:
Есть несколько причин, по которым ОЗУ не используется таким образом:
Сказав это: Да, RAM-диски существуют. Даже в качестве платы PCI с разъемами DIMM и в качестве устройств для очень высоких операций ввода-вывода. (В основном используется в корпоративных базах данных до того, как SSD стали опцией). Эти вещи не дешевые, хотя.
Вот два примера недорогих карт памяти RAM, которые сделали его в производство:
Обратите внимание, что существует гораздо больше способов сделать это, чем просто создать RAM-диск в общей рабочей памяти.
Вы можете:
Я уверен, что от Amiga RAD можно описать гораздо больше: сбросить оставшиеся диски RAM на IOPS, выравнивание износа, и Gd знает, что. Тем не менее, я сокращу это и перечислю только еще один пункт:
Цены DDR3 (текущая DRAM) и цены SSD:
источник
RAM loses its contents when powered off.
Если быть точным, то только энергозависимая оперативная память, но энергонезависимая оперативная память сохраняет все даже при отключении питания, как, например, флэш-чипы . В этом смысле SSD не отличается от RAM, но является ее подтипом.Операционные системы уже делают это с кешем страниц :
Когда вы читаете страницу с диска, ваша операционная система загружает эти данные в память и оставляет ее там, пока она не будет лучше использована для этой памяти. Если у вас достаточно памяти, ваша ОС будет читать каждую страницу только один раз, а затем использовать ее из памяти. Единственная причина, по которой ОС выполняет реальный дисковый ввод-вывод, заключается в том, что ей нужно прочитать страницу, которой еще нет в памяти, или если страница записана (в этом случае вы, вероятно, захотите сохранить ее на диск).
Одним из преимуществ таких действий является то, что вам не нужно загружать весь жесткий диск в память, что полезно, если оно не помещается, а также означает, что вы не тратите время на чтение файлов, которые не используются вашими приложениями. необходимость. Еще одним преимуществом является то, что кэш можно отбрасывать всякий раз, когда ОС требуется больше памяти (лучше, чтобы при следующем чтении с диска было немного медленнее, чем при сбое программ, потому что им не хватает памяти). Кроме того, полезно, чтобы пользователям не нужно было вручную определять, что должно быть на виртуальном диске или нет: все, что вы используете чаще всего, автоматически будет храниться в основной памяти.
Если у вас много памяти, но ваши приложения работают не так быстро, как вы ожидаете, есть большая вероятность, что они работают медленнее, потому что они работают безопасно. Например, SQLite работает на несколько порядков быстрее, если вы скажете ему не ждать завершения записи, но ваша база данных будет полностью повреждена, если вы не выключите ее полностью.
Кроме того,
/tmp
обычно это ramdisk в дистрибутивах Linux, потому что это нормально, если эти данные будут потеряны. Тем не менее, есть некоторые споры о том, является ли это хорошей идеей, потому что, если слишком много данных записывается/tmp
, вам может не хватить памяти.источник
Как отмечает Алан Шутко в своем комментарии к вопросу, оперативная память на самом деле не дешевая.
Вот некоторые данные. Когда я ищу в Google 4 ГБ ОЗУ, 64 ГБ SSD и 1 ТБ HDD (механический жесткий диск), вот цены, которые я вижу (это на 25 августа 2013 г.):
4 ГБ ОЗУ = 32-36 долл. => ОЗУ = ~ 8 долл. За ГБ
64 ГБ SSD = $ 69 - $ 76 => SSD = ~ 1 $ за ГБ
Жесткий диск 1 ТБ = 80 долларов США => Жесткий диск = 0,08 доллара США за ГБ
Вау! Жесткие диски в 100 раз дешевле оперативной памяти! И твердотельные накопители в 8 раз дешевле оперативной памяти.
(Кроме того, как указывалось в других ответах, оперативная память по своей природе нестабильна, и поэтому вам нужна другая форма постоянного хранилища.)
источник
Я делаю все свои немедленные операции чтения / записи для генерации контента на RAM-дисках на моей локальной машине. Я также храню там свои журнальные папки MongoDB, а также мои компиляторы и интерпретаторы Python и стандартную библиотеку. Этот диск сохраняется при выключении и восстанавливается при запуске. Второй диск RAM, который я использую, составляет 64 мегабайта, и все папки кэша моего интернет-браузера указывают на него; тот теряется при выключении и сбрасывает себя, когда наполняется.
Используйте правильные инструменты для работы, я думаю, это был бы ответ, который я вам дам. Я генерирую данные в 30-1000 раз быстрее, используя RAM-диск, чем на моем 7200rpm Western Digital.
Это программа, которую я использую: http://www.romexsoftware.com/en-us/primo-ramdisk/
... и когда 32 гигабайта Ram стоят менее 200 долларов, я не понимаю, почему это не становится более распространенным.
источник
Да, это предпосылка многих баз данных в памяти, которые появляются на рынке. Одним из примеров является SAP HANA. Идея заключается в том, что оперативная память дешева и с точки зрения производительности операции чтения / записи в оперативной памяти в 1000 раз быстрее операций на диске. Таким образом, большая часть данных хранится в оперативной памяти, а затем вы определяете стратегию устаревания данных, с помощью которой старые данные возвращаются в холодное хранилище (т. Е. На диск).
источник
Краткое объяснение :
При первом запуске приложения оно переносится с жесткого диска или сети в ОЗУ. Так что не волнуйтесь, вы уже делаете это.
Но, как правило, существует не только один файл приложения / процесса и некоторые операции ввода-вывода, предназначенные для жесткого диска или сети (другие файлы приложения или другие операции ввода-вывода с системой и т. Д.), Которые могут замедлить приложение. Они могут быть направлены на RAM-диск, но вы должны учитывать, что RAM-диск удаляется при отключении питания и должен быть снова заполнен при запуске.
И ОЗУ не так дешево, как представлено в вопросе. Вы должны рассчитывать не только стоимость оперативной памяти, но и стоимость рабочей памяти, включая разъемы на материнской плате (они ограничены / редки и, следовательно, более ценны), а также стоимость потерянных данных при снижении энергопотребления.
Например, компьютер с жестким диском емкостью 1 ТБ можно купить дешево, и речь идет о домашних компьютерах, компьютер с 1 ТБ оперативной памяти находится в диапазоне суперкомпьютеров. (но Intel работает над чем-то средним: http://vr-zone.com/articles/more-on-xeon-e5-terabyte-of-ram-even-at-midrange-/14366.html )
источник
Это БОЛЬШОЙ вопрос, и я нахожу ответы увлекательными. Я собираюсь прокомментировать это как администратор базы данных Oracle, и мои ответы являются конкретными для базы данных Oracle. Это большая ошибка, которую делают многие люди при работе с Oracle. Я не уверен, относится ли это и к другим приложениям. Это не предназначено, чтобы быть не по теме, но предназначено как специализированный ответ.
Когда вы настраиваете производительность с Oracle, вы действительно пытаетесь устранить узкие места. Хотя большинство из нас не говорят этого, оно основано на теории ограничений: https://en.wikipedia.org/wiki/Theory_of_constraints
Память не может быть вашим узким местом. У Oracle есть сложные механизмы для управления памятью, и простое увеличение памяти может на самом деле замедлить ситуацию, если в других областях есть узкое место. Позвольте мне привести один пример, который ОЧЕНЬ распространен.
Запросы кажутся медленными. Консенсус в том, что если мы увеличим ОЗУ, нам следует увеличить время ответа на запросы, поскольку память быстрее, чем диск. Хорошо ... Вот как Oracle обрабатывает управление памятью для данных. Oracle имеет множество областей памяти, которые выделены для определенных обязанностей. Таким образом, вы можете увеличить эти воспоминания. Область, используемая для данных, называется «буферным кешем». Это серия связанных списков (количество их увеличивается с каждой версией). Каждый раз, когда блок обнаруживается на диске во время запроса, на нем запускается алгоритм хеширования, чтобы определить, в какой список его вставить. Где разместить его в списке, основывается на алгоритме подсчета касаний (объяснено на сайте поддержки Oracle, так что за это надо платить ... это не особо важно).
ОДНАКО, когда вы запускаете запрос, Oracle снимает блокировку в цепочке буферов, которую вы ищете в данный момент. Этот LATCH (примечание: это не блокировка. Google "latch", если вы не знаете разницу) блокирует все другие операции в этой цепочке на время вашего чтения. Поэтому он блокирует операции чтения и записи (это совершенно отличается от того, что Oracle утверждает, что блокировки не блокируют операции чтения).
Это необходимо, потому что когда вы читаете блок в цепочке, Oracle перемещает его в зависимости от того, как часто он «запрашивается». Более часто запрашиваемые блоки перемещаются вверх, а менее часто запрашиваемые блоки остаются внизу и стареют. У вас не может быть 2 сеансов, читающих связанный список и перемещающих блоки, или вы попадете в указатели, которые указывают на несуществующие местоположения.
Когда вы увеличиваете размер памяти, вы увеличиваете размер каждого связанного списка. Это увеличивает время, необходимое для чтения списка. Один плохой запрос или сложный запрос может сделать десятки тысяч или даже миллионы прочитанных связанных списков. Каждое чтение выполняется быстро, но их количество приводит к выполнению защелок, которые блокируют другие сеансы. Oracle называет это «логическим IO» (или буфером get, или чем-то другим. Этот жаргон специфичен для Oracle и может означать что-то другое в других частях ИТ).
Таким образом, если список длиннее и у вас действительно плохой SQL, операторы SQL будут дольше удерживать свои защелки. Увеличение памяти может иногда УМЕНЬШИТЬ производительность. В большинстве случаев этого не произойдет. Люди будут тратить много денег и не видят никакой выгоды. При этом бывают случаи, когда вам требуется больше памяти в буферном кеше, но вы должны правильно определить узкое место, чтобы знать, подходит ли это. Я не могу обсуждать, как проанализировать это в этом посте. Смотрите форумы DBA. Некоторые люди обсуждают это там. Это довольно сложно.
У кого-нибудь есть конкретные примеры с другими частями программного обеспечения, где это может произойти? Существует потрясающая бизнес-книга под названием «Цель», в которой обсуждаются способы устранения ограничений на фабрике. Этот процесс очень похож на то, что делают администраторы Oracle при оценке проблем с производительностью. Это часто стандартное чтение в программах MBA. Это очень ценно для чтения для ИТ-профессий.
https://en.wikipedia.org/wiki/Eliyahu_M._Goldratt
источник
Оперативная память может быть дешевой, но не такой дешевой, как традиционное хранилище.
У меня есть жесткий диск 3TB ($ 99): HDD Цитата
И вы будете нуждаться в 48 из них для 3TB в ($ 719) каждый: RAM Цитата
Это составит 34,512 против 99 долларов. Не говоря уже о цене оборудования, необходимого для запуска 3 ТБ оперативной памяти.
источник
Это на самом деле сделано в некоторых сценариях. Если у вас достаточно маленький стек операционной системы / приложения, вы можете запустить его полностью в оперативной памяти. Конечно, у него есть все недостатки, которые есть у принятого ответа. Но это возможно и происходит.
Взгляните на Puppy Linux, популярный дистрибутив Linux. На странице «Как это работает» рассказывается о запуске из ОЗУ: http://puppylinux.org/wikka/howPuppyWorks
источник
Я думаю, что ответ частично можно ответить следующим образом:
Предпосылка:
Учитывая ограниченное количество слотов памяти, важным решением является более высокая микросхема памяти с меньшими внутренними размерами и / или 3D-стекирование. Оба процесса прогрессировали, как и ожидалось, в течение последних 36 месяцев.
Итак, вопрос: « Максимальный объем памяти DDR3 » или семантически: « DDR3, почему нет модулей памяти больше 16 ГБ »?
И ответ:
Стандарт DDR3 позволяет использовать чипы емкостью от 512 мегабит до 8 гигабит, что обеспечивает максимальный размер модуля памяти 16 гигабайт ( src ).
DDR4 изменит это, как показано на этой карте технологий:
Результат:
Несколько предостережений к основательному посту Хеннеса:
pkr298
предполагается, что вся ОС и программы загружены в ОЗУ, а не то, что это должно отменить жесткий диск / SSDисточник
Вы на самом деле правы. В ближайшее время все хранилище и память будут в форме на нано оперативной памяти. NRAM - это, по сути, «механические» переключатели шириной в несколько атомов. Он не нуждается в токе для поддержания состояния, поэтому он энергоэффективен и не требует охлаждения, а поскольку переключатели настолько малы, плотность очень высока и Это хорошо по двум причинам: одна из них - быстрый доступ к памяти, и вы сможете хранить терабайты данных на небольших устройствах, таких как мобильные телефоны. если вы хотите узнать больше, посмотрите это: http://www.nantero.com/mission.html и этот http://en.wikipedia.org/wiki/Nano-RAM
источник
Как уже говорили другие, оперативная память нестабильна и примерно в 10 раз дороже SSD.
Тем не менее, есть IS продукт, что там идет довольно близко к тому , что вы описываете , - к сожалению , я не могу вспомнить название.
Это накопитель на основе ОЗУ (IIRC max 64 ГБ), соединенный с CF-картой и батареей. Когда вы включаете систему, она копирует содержимое CF-карты в ОЗУ (я считаю, что обслуживание запросов с CF-карты, если они еще не были загружены). При выключении содержимое ОЗУ копируется на CF-карту. -Батарея достаточно большая, чтобы позволить ей закончить до того, как она разрядится.
Это не дешево.
источник