LINUX.ORG.RU
ФорумTalks

RAM-only система

 ,


1

2

Установка федоры с GUI занимает несколько гигабайтов. Современный консьюмерский процессор поддерживает 64 ГБ оперативы и её стоимость в общем-то совсем не запредельная. Также современные ноутбуки неплохо работают в режиме suspend.

Т.е. в целом ничего экстраординарного в том, чтобы установить дистрибутив на RAMdisk и работать без жёсткого диска нет, все технологии вполне доступны.

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

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

Из плюсов - будет максимально возможная скорость работы с диском. Из минусов - диск таки будет довольно небольшой. Если у нас 64 GB оперативной памяти, то больше 48 GB на диск отдавать уже будет затруднительно.

Следующая остановка - установка ОС в кеш процессора. В тредриппере 256 MB L3 кеша. На федору с графикой не хватит, но на что-то миниатюрное и консольное, думаю, должно хватить.

★★★★★

Последнее исправление: Legioner (всего исправлений: 2)

Какую ты представляешь адресацию к кэшу процессора, если система будет только в кэше?

xmikex ★★★★
()

Удивлён, что в теме до сих пор нет Спуфа.

imul ★★★★★
()

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

Chord ★★★★
()
Ответ на: комментарий от Chord

В скорости работы разницы практически не заметишь.

Ты серьёзно? RAM на несколько порядков быстрей SSD по всем параметрам.

работать по сети с диском - странная идея.

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

Legioner ★★★★★
() автор топика

в целом ничего экстраординарного в том, чтобы установить дистрибутив на RAMdisk и работать без жёсткого диска нет

устанавливаешь систему куда угодно, хоть в директорию chroot, хоть на жёсткий диск, а затем его монтируешь в директорию

дистрибутив создаётся одной командой booty build директория/

Естественно возникает вопрос - с чего грузиться и как перезагружаться.

с любого накопителя, жёсткий диск или USB-флешка, или же DHCP по сети по кабелю.

Также для того, чтобы избежать потери данных, можно попробовать постоянно скидывать изменённые данные на диск

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

почитай README-файл booty, там написаны ключевые тезисы о преимуществах такой системы, работающей в RAM.

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

сама система может быть как в initramfs образе, так и отдельно где-то лежать, в squashfs например, или ещё какой-то фс или диске, и загружаться оттуда.. не суть важно.

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

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

Spoofing ★★★★★
()
Последнее исправление: Spoofing (всего исправлений: 1)
Ответ на: комментарий от Legioner

Ты серьёзно? RAM на несколько порядков быстрей SSD по всем параметрам.

если под ssd имеется в виду nvme на pci-e, то всего лишь примерно на порядок медленнее RAM

linuxoidspb
()

Следующая остановка - установка ОС в кеш процессора. В тредриппере 256 MB L3 кеша. На федору с графикой не хватит, но на что-то миниатюрное и консольное, думаю, должно хватить.

Идея интересная, но кэш в современных процессорах не адресуем извне, так что ОС в кэше не реализуема.

linuxoidspb
()
Ответ на: комментарий от linuxoidspb

Он хочет систему-на-кристалле с плоской памятью. Но он не достаточно старается: самая быстрая память в процессоре - регистры. То есть, надо сделать их достаточно, чтобы зафигачить туда все программы и данные! Как тебе такое, Илон Маск?

Shaman007 ★★★★★
()
Ответ на: комментарий от linuxoidspb

ИМХО, здесь важен именно подход к организации работы.

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

работа в RAM приучает тебя, что данные надо где-то хранить, приучает пользователя к правильному: ОС отдельно, данные отдельно.

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

Spoofing ★★★★★
()
Ответ на: комментарий от Shaman007

На кворе пишут: Recent enough Intel processors apparently allow mapping CPU cache memory as RAM – a trick used by some BIOS or UEFI firmware implementations in the early stages of booting up.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Legioner

RAM на несколько порядков быстрей SSD по всем параметрам.

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

Chord ★★★★
()
Ответ на: комментарий от Chord

Тут ты прав, всё от задач зависит, смотря что куда упирается. Но если процессор и память ускорить возможности нет, то заменив диск памятью ускорить этот элемент системы возможность есть.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Shaman007

Я в курсе, зачем кеш нужен. Ты говоришь, что его нельзя адресовать. А люди говорят, что можно. В целом очевидно, что можно работать без RAM, т.к. процессор при запуске до инициализации DRAM именно так и работает.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Legioner

Ты серьёзно? RAM на несколько порядков быстрей SSD по всем параметрам.

Серьезно, потому что софт учитывает, что SSD медленнее по всем параметрам.

Естественно возникает вопрос -

накой

t184256 ★★★★★
()
Ответ на: комментарий от Legioner

Да, ты не понимаешь, зачем нужен кеш. Ты хочешь систему с быстрой плоской памятью. Ну вот ZX-Spectrum таким был, пользуйся.

Shaman007 ★★★★★
()
Ответ на: комментарий от Legioner

RAM на несколько порядков быстрей SSD по всем параметрам.

PC4-25600 : Пиковая скорость передачи данных, МБ/с 25600. SSD диск Samsung 980 PRO : Скорость чтения До 7000 Мб/сек. Товарищ. Я не вижу даже одного порядка. Или ты поэт?

lenin386 ★★★★
()
Ответ на: комментарий от Shaman007

Я говорю про современные готовые процессоры, которые можно пойти и купить в магазине. Если бы был SoC с современным процессором и 256 MB SRAM, но я такого не видел. А современные процессоры с L3 кешем такого размера уже есть здесь и сейчас и его объём позволяет решать некоторые задачи.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от lenin386

Посмотри на производительность и латентность случайного доступа. Зачем смотреть на линейный, который почти никому не интересен.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Legioner

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

ВНЕЗАПНО это широко используется. Если ты напишешь программу, которая будет помешаться в 32MB (это сейчас максимальная емкость на ядро) со всеми данными и будешь ее запускать как единственную, без операционной системы, она вся будет жить в кеше.

Но на самом деле тебе и этого не надо, надо чтобы твоя программа и все ее данные в кеш помещались, процессор сделает все сам (автоматизация!).

Shaman007 ★★★★★
()

RAM-only система

У меня был успешный вариант сотворения такого изделия на микроконтроллере К1816ВЕ51. Там память программ и данных штатно были во внешних ПЗУ (гарвардская архитектура), но я их продублировал внешними микросхемами ОЗУ с переключением банков памяти на лету. А при сбоях питания сторожевой таймер вновь загружал всё из ПЗУ с последующим копированием в ОЗУ. Работало быстро и надёжно.

quickquest ★★★★★
()
Ответ на: комментарий от Legioner

Там про использование кэша для стека написано. Ничего о полноценном использовании кэша как оперативной памяти там не написано.

xmikex ★★★★
()
Ответ на: комментарий от Legioner

Нет, погоди. Ты говорил «по всем параметрам». Теперь уже оказывается, что не по всем. Хорошо. Но вы же предлагаете использовать RAM как блочное устройство, причём тут тогда производительность и латентность случайного доступа(c) ? Нет никакого случайного доступа в блочных операциях, товарищ. Только последовательный.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от Legioner

Объяснение не особо. Там либо плохой перевод, либо у афтара в голове каша. Товарищ, это не инициализация DRAM, а работа с параметрами контроллера DRAM. Где там сказано, что до данной операции, процессор с RAM не работает? Он с ней работает. Просто в совсем трешовых случаях, не успешно, из-за чего машина не запускается.

lenin386 ★★★★
()
Ответ на: комментарий от lenin386

Всё там правильно. Когда ты подал питание на процессор, у него нет доступа к DRAM. Вообще никакого. Ему замаплена read/only флешка, откуда он читает команды для исполнения. Ему нужно прочитать параметры DRAM, в некоторых случаях провести калибрацию, инициализировать контролер памяти, сделать маппинг этой памяти на адресное пространство и только после этого он получает доступ к RAM.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Legioner

Это раньше было, когда контроллер памяти был не в процессоре, а сейчас в современных процах контроллер памяти внутри проца

linuxoidspb
()
Ответ на: комментарий от lenin386

Стек для процессора это обычная память. Я тебе больше скажу, строго говоря для процессора стека вообще нет, есть некоторые инструкции, которые позволяют программе удобно работать с абстракцией «стек». А для процессора стек это просто кусок памяти, куда указывает esp, который обычно используется для адресации локальных переменных.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Legioner

Когда ты подал питание на процессор, у него нет доступа к DRAM. Вообще никакого.

Кто тебе это сказал?

Ему замаплена read/only флешка, откуда он читает команды для исполнения.

Да. И где эта флешка находится по-твоему? Не трудись. Она находится на видеокарте. Которая ничего не знает ни о DRAM, ни о контроллере памяти. И эта «флешка» отрабатывает свою программу. Что без RAM возможно конечно теоретически. Но нет, так никто не делает. А вот только после этого, запускается BIOS, о которой ты знаешь, которая уже прочитать параметры DRAM, в некоторых случаях провести калибрацию, инициализировать контролер памяти, сделать маппинг этой памяти на адресное пространство и (c)

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от lenin386

Я не знаю, о какой видеокарте ты говоришь. Если ты про Intel ME, может ты и прав, но это новомодные изобретения, раньше его точно не было и процессор самостоятельно всё инициализировал. Хотя скорей всего и сейчас это делает процессор. В любом случае тред не про это, а про то, можно ли использовать L3 кеш в качестве памяти. Можно.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Legioner

Я не знаю, о какой видеокарте ты говоришь.

Об обычной, товарищ. Ту, которая изображение выводит. Никогда не замечал, что надпись типа «Leadtek 8Gb RAM» или ещё чего там у тебя выводится _до информации об оперативе ? Video BIOS грузится первой, и она на видеокарте, физически. Такие дела.

lenin386 ★★★★
()
Ответ на: комментарий от Legioner

Кеш - запоминающее устройство и его только как память и используют. Можно еще орехи им колоть. Его нельзя прямо адресовать, он так устроен.

Совершенно непонятно, что ты пытаешься накостылять. Посмотреть, как будет работать система, у которой ядро полностью живет в L3? Просто выключи L3 cache процессора, результат будет точно такой же. Ты хочешь обработать данные быстро, не лазяя в память? Сделай так, чтобы программа и данные были меньше кеша, все остальное будет само работать.

Shaman007 ★★★★★
()
Ответ на: комментарий от Legioner

Стек для процессора это обычная память.

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

А для процессора стек это просто кусок памяти, куда указывает esp

Товарищ, esp не указывает на физическую память, никогда. На физическую память указывал SP в далёкие времена 80-х, да и то не всё так просто было в случае x86.

А для процессора стек это просто кусок памяти,

Нет, товарищ. У стека - свой сегмент, на котором, по-правильному, установлены такие атрибуты, что туда ничего не записать напрямую, нельзя запускать оттуда код и пр. Хотя, могут быть не установлены. Тут надо учить историю, это сейчас напридумывали всяких команд для удобства погроммистов, а они только тупеют от этого! Раньше что-то типа call sp - было дичью. Стек не адресовался даже.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 4)

Чем тебе гибернация не катит?

vasya_pupkin ★★★★★
()

Хотел кастовать Пуфика, а он уже тут.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от xmikex

На самом деле, это вполне выполнимо. X86 умеют работать вообще без памяти, используя кэш как память (и это даже используется!). Дальше ты просто создаёшь RAM disk и всё.

Но ТС слегка лажу написал. У жирных nvme ssd пропускная способность вполне на уровне DDR4, только латентность больше. Так что всё это не очень нужно. Алсо есть ssd от штеуда в форме DIMM модулей.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от Shaman007

Шома, ты вот опять вылез и понтуешься своим невежеством. ТС хочет странного, но его желание вполне выполнимо.

hateyoufeel ★★★★★
()

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

А пока можешь вот доки по coreboot почитать. Он это поддерживает.

https://www.coreboot.org/images/6/6c/LBCar.pdf https://www.coreboot.org/data/yhlu/cache_as_ram_lb_09142006.pdf https://www.yumpu.com/en/document/view/34302735/car-using-cache-as-ram-in-linuxbios-coreboot

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)

Если для практических задач, то берёшь самый быстрый из подключаемых к ноуту ssd, ставишь систему на него. Далее делаешь рамдиск, на который при загрузке системы будут кешироваться все файлы системы. Полуготовых решения для этого валом.

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

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

ixrws ★★★
()

Из плюсов - будет максимально возможная скорость работы с диском

А кэш файловый тебе для чего в linux?

И зачем этот гемор, когда у тебя есть SSD со скоростью доступа >3GB/s?

zgen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.