Поймал себя на ощущении, что очень хочется поделиться своим опытом работы с интеловской энергонезависимой памятью (Intel Optane memory или Intel PMem = persistent memory). Я буду для краткости называть ее ПМем. Думаю, что несмотря на объем продаж в сотни миллионов долларов, пока мало кто с ней сталкивался и знает ее специфику. Я же по долгу службы занимаюсь ей уже довольно продолжительное время и гонял на ней различные приложения и микро-бенчмарки. А также добивался ее эффективного использования модифицируя под нее клиентские коды.
В принципе литературы по ней навалом, по крайней мере на английском, но практические советы и простое и понятное описание ее поведения найти не просто, если вообще возможно. Я хочу рассказать что от нее можно ожидать, специфику ее режимов работы в тесной привязке к производительности. А также поясню, в каких случаях она работает хорошо, и в каких вряд ли оправдает ожидания. На всякий случай здесь интеловская заглавная маркетинговая страница по этой технологии.
В настоящее время уже выпущено два поколения ПМем (100 серия и 200 серия). Сотая серия работает с процессорами Xeon Scalable 2-го поколения (Cascade Lake), а двухсотая – с 3-м поколением (Ice Lake). Это все серверные платформы. В основе ее та же технология Optane, которая впервые появилась в твердотельных дисках (Intel Optane SSD). Диски, кстати, очень быстрые по сравнению с обычными 3DNAND. Время отклика у них лучше по крайней мере раз в 5, а в реальности – в 10-20 и больше. Это связано с особенностями производительности как функции нагрузки. Оптановские диски выдают на гора практически при любой нагрузке, держа время отклика почти стабильным в районе 8 мксек (даже кажется еще снизили в последнем поколении), и уже при небольшом количестве пишущих на них или читающих с них потоков их пропускная способность подходит к 100%. 3DNAND выглядит заметно послабже. Ему нужны десятки потоков, чтобы что-то отдаленно напоминающее максимальную пропускную способность материализовалось в реальности. При этом время отклика естественно уходит за 100 мксек. Впрочем при чтении большими блоками достаточным количеством потоков и те и другие диски выдадут близкие результаты по пропускной способности. На самом деле она для топовых твердотельных дисков часто ограничена их PCIe соединением (им обычно выделяют две линии). С переходом на PCIe 4 в последнем поколении платформ/процессоров (те что Ice Lake) Интел сразу и диски выпустил с удвоенной пропускной способностью.
Но вернемся к памяти. На вид это те же плашки, что и ДДР.
На самом деле ДДР требуется, чтобы система работала. Типичная конфигурация – это 1 модуль ДДР и 1 ПМем на канал памяти, но вообще возможно много вариантов. То есть в Ice Lake сервер с двумя процессорами можно поставить 2х8 модулей ДДР и 2х8 модулей ПМем. Объем памяти одного модуля – 128, 256 или 512ГБ. Думаю он как раз и объясняет, почему многие читатели пока с этой памятью не сталкивались. Хотя она намного дешевле ДДР за гигабайт, но при таких объемах ценники все равно получаются серьезные. С 512-ми модулями в двухпроцессорном сервере можно получить 8ТБ ПМем плюс еще ДДР. Популярное соотношение 8:1, при таком в сумме будет 9ТБ, но суммировать можно не всегда, и я об этом расскажу.
Если очень грубо сравнить производительность ПМем и ДДР, то ПМем медленнее примерно втрое. Это относится как ко времени доступа, так и к пропускной способности. Но есть очень много всевозможных нюансов. При доступе на чтение коэффициент три работает очень неплохо, но при добавлении даже небольшого количества записи картина резко усложняется и не в пользу ПМем. Такому поведению есть причины. Контроллер памяти ПМем (который является частью каждого модуля) оперирует блоками в 256 байт. У него есть крохотный буферок, в который данные изначально поступают (в случае записи). Если например пришло несколько кэш линий в этот буфер, и некоторые из них соседние (допустим писали два потока, каждый последовательно – соседние будут по-любому, но необязательно по порядку), то контроллер их поменяет местами и возможно сумеет укомплектовать 256 байтными блоками, чтобы писать с максимальной эффективностью. Ясно, что если потоков становится много, то шансы резко падают, буферок-то скромнейшего размера.
Подозреваю, что увеличить его проблематично, сложность растет нелинейно, возможно контроллер не справится. Другая сторона проблемы – работа механизма вытеснения кэш-линий. Когда мы что-то пишем в память, на самом деле оно туда сразу не идет, а зависает в кэше (write through cache). Дальше эта кэш линия будет ждать, когда подойдет ее очередь на вытеснение. Процесс непредсказуемый, и соседние кэш линии записанные подряд могут быть вытеснены в разное время. Соответственно, даже при последовательной записи в ПМем получаем случайную, и 256 байтный буфер работает заполненным лишь частично (возможно всего на четверть, то есть одной кэш-линией). Есть два варианта лечения этой проблемы, но в обоих случаях придется править код, чтобы их реализовать. Первый – вызывать инструкцию clflush/clflushopt, чтобы сразу сбросить кэш-линию в память. Она не бесплатная, но имеет дополнительный бонус. Это гарантия, что данные сохранены в постоянной памяти. То есть они переживут выключение электричества. Вторая опция – использование NT writes (non temporal writes). Это инструкции для записи напрямую, минуя кэш. Отличная вещь для ПМем, гарантирует в разы более высокую производительность и персистентность (барьер по записи только требуется). Но есть одно НО. Данные не попадают в кэш. То есть если они будут сразу после этой записи использованы, то придется их загружать из памяти. Это далеко не всегда приемлемо, но может быть все равно более производительным вариантом. Я уже говорил, что чтение работает намного лучше, добавлю, что и пропускная способность при чтении выше раза в 2.5 как минимум, а при менее оптимальном количестве потоков может быть и в 5-6 раз выше.
Еще один любопытный нюанс заключается в том, что у 100-го и 200-го поколений запись масштабируется совершенно по-разному. У сотого она сначала заметно растет от 1 до 4-8 потоков, а потом очень плавно падает. У двухсотого максимум достигается в одном потоке. В абсолютных цифрах это около 23ГБ/сек на запись и 55ГБ/сек на чтение. Это данные для одного сокета, два дадут вдвое больше. В случае совмещения сокетов в один диск с помощью SW RAID двойки уже не получится, а только около 1.5, если не меньше. Как ни странно, такая как бы неважная (отрицательная даже) масштабируемость – это неплохо. Очень много приложений не особо оптимизированных, где пишущих потоков мало, а то и вообще один. И с ПМем они как раз подружатся.
Дефолтная конфигурация memory interleave – interleave по всем Пмем модулям сокета. Соостветственно достигается максимальный параллелизм и производительность. Между сокетами interleave не работает. При желании можно каждый модуль сконфигурировать независимым, но это безумие, так как писать придется параллеьно уже на уровне приложения. Не представляю кому это может пригодиться.
Теперь давайте обсудим варианты конфигураций. На самом высоком уровне их два – 1LM (one level memory) и 2LM (two level memory). Во втором случае только ПМем видна операциононой системе в качестве памяти, ДДР же как бы спрятана на втором уровне и работает как кэш для ПМем (direct cache). ПМем в этом случае не обладает энергонезависимостью, то есть при перезагрузке данные не сохранятся. Смысл обычно в том, чтобы получить больше памяти, чем возможно с ДДР, либо получить столько же, но существенно дешевле.
Плюс такой конфигурации в том, что приложению вообще не надо ничего знать о памяти. Оно просто будет работать. При этом если данные используются многократно, есть неплохие шансы, что они будут жить в основном в ДДР и производительность приложения может практически не уступать случаю с только ДДР. То есть можно иметь и использовать нереально огромную память и при этом работать с производительностью ДДР. Отличный пример – in-memory базы данных. Как правило они демонстрируют 90-100% производительности в сравнении с аналогичной системой оснащенной только ДДР. Недостатки у этой конфигурации тоже есть. Во-первых, ДДР фактически недоступна для данных. То есть аллоцировать напрямую в ней нельзя никак. Во-вторых, это самая низкопроизводительная мода для ПМем. Ко времени доступа добавляется время доступа в ДДР и пропускная способность в разы ниже (~4-5 раз), чем у 1LM. У приложений вычислительного типа шансов на успех немного.
1LM – мода гораздо более интересная. Тут есть варианты. В смысле производительности самой ПМем они практически аналогичны (максимальная), но имеют принципиальные отличия не хардверного свойства. Все варианты относятся к типу AppDirect. Значение этого термина в том, что как бы приложение напрямую заботится о взаимодействии с ПМем, хотя в реальности это не обязательно.
Первый вариант – это Storage over AppDirect. Фактически в этой конфигурации мы получаем диск на ПМем с файловой системой. Самый простой случай – это конфигурация обычного блочного диска. То есть доступ поблочный. Мелкий недостаток – время доступа, блок есть блок. Нужна кэш линия – все равно грузи 4К. Но есть и крупные достоинства. Во-первых, для приложений которым требуется ускорение ввода-вывода не потребуется никаких модификаций. Просто переход на ПМем диск. Во-вторых, в данном случае операционная система сама автоматически кэширует страницы с диска в память. Как только единица данных со страницы прочитана, операционная система грузит всю страницу в ДДР. То есть следующие данные с этой страницы пойдут из ДДР. Для последовательного доступа (а такого очень много) это работает отлично. На мой взгляд, эта конфигурация – самая универсальная и сбалансированная. Побеждает любые самые быстрые системы хранения данных с большим запасом (обычно 2-7 раз) на практически любых тестах на чтение.
Второй вариант – та же Storage over AppDirect, но смонтированная в DAX (direct access) моде. Эта мода требует файловую систему, умеющую работать с ПМем, конкретно дающую доступ по кэш линиям. С этим проблем давно нет, любая современная операционка это поддерживает. В смысле производительности разница по сравнению с просто Storage over AppDirect существенная. Во-первых, гранулярность доступа в одну кэш линию сокращает время доступа в разы. То есть случайный доступ будет просто летать по сравнению с любыми дисками и системами хранения данных. Как вам ускорение в 100 раз например? Вполне реальная цифра. Недостаток этой конфигурации в том, что операционная система больше не вовлечена и не кэширует страницы в ДДР. То есть все, что было аллоциовано в ПМем будет ходить оттуда напрямую в кэш процессора. В этой конфигурации ПМем дико рвет любые самые быстрые системы хранения данных на случайном доступе, но в случае последовательного доступа с переиспользованием данных выиграет не всегда. Аналогично предыдущему случаю нужды модифицировать приложение нет при условии, что задача – ускорить работу ввода-вывода. Это если в основном чтение; если же много записи, то для производительности модификации понадобятся.
И наконец третий вариант – AppDirect Volatile. В данном случае ПМем используется как волатильная память. Производительность очень близка к DAX и даже чуть лучше, потому что больше нет файловой системы. Здесь уже речи о работе с файлами нет, ПМем видна именно как память. Задача разработчика – грамотно аллоцировать данные (и писать правильными инструкциями). Маленькие и динамичные данные идут в ДДР, а большие и более статичные – в ПМем. Если по ходу работы приложения появляется нужда переместить данные из одного типа памяти в другой – это должно будет сделать приложение (то есть позаботиться должен разработчик кода). ПМем видна как дополнительная NUMA-node, так что аллокатор написать не проблема.
Еще один интересный факт – можно сконфигурировать комбинацию таких вариантов, например частично 1LM и частично 2LM. Или создать две файловые системы на ПМем, одну обычную, а другую с прямым доступом. Или и то и другое одновременно. Одним словом, простор для творчества есть.
Что еще надо знать о ПМем? Если погуглить Intel PMem, то сразу всплывет PMDK. Это набор библиотек, позволяющих эффективно работать с ПМем на разных уровнях. Главная идея PMDK – помочь разработчику грамотно (транзакционно) работать с persistence. То есть с помощью ее библиотек обеспечить consistency данных (либо транзакция полностью сохранена в постоянной памяти, либо совсем не сохранена, но не частично). Это можно делать от отдельной переменной до транзакций высокой сложности. На самом деле эти механизмы довольно похожи на синхронизацию потоков и без них потребовалась бы очень кропотливая работа и затратная отладка. Если почитать документацию PMDK, то может сложиться впечатление, что без нее – никуда, но это не так. Даже если приложение работает не с файлами, а с памятью, использовать варианты типа Storage over AppDirect (то есть с персистентностью) совсем не сложно. Для этого достаточно открыть файл, сделать ему memory map и размещать все данные, которые идут в ПМем в этом файле. При этом разработчик сам выбирает какими инструкциями писать в ПМем и обеспечивает consistency данных по тем же в общем принципам как это делается в многопоточных приложениях. PMDK делает то же самое.
Как я уже сказал, чтение работает гораздо производительнее и стабильнее, чем запись. Запись же более капризна, требует правильных инструкций и имеет умеренно негативное масштабирование. Это обстоятельство часто приводит к ситуации «неоправдавшихся надежд» у клиентов, впервые попробовавших ПМем не трогая приложение. Проблема в том, что использование стандартного ввода-вывода операционки отнюдь не оптимизировано под ПМем и часто производительность получается аналогичной твердотельному диску. Из моей практики типичное ускорение при переходе на Пмем (если брать только ввод-вывод) составляет от 3.5 до 6 раз в ситуациях интенсивной записи. Это в сравнении с одним ССД и при использовании правильных инструкций. У нас есть несколько инструментов и методов точного тестирования без изменения приложения, но это отдельная тема.
Любопытной проблемой является определение данных для аллокации в ДДР или ПМем. Методы понятны и характеристики данных можно померять например с помощью VTune Performance Analyzer. Но опять же из моей практики вариантов приложений вычислительного типа, которые в таком режиме будут неплохо работать крайне мало. Базы данных и прочие приложения по обработке больших данных практически единственное направление, которое работает. В большинстве приложений вычислительного типа значительную часть данных надо и читать и писать, а запись приводит к такой деградации производительности ПМем, что ПМем становится невыгодной.
В общем, если совсем кратко, то так. Если речь идет о замещении любых самых лучших диковых систем хранения данных и главный фактор - производительность, то Пмем – это находка. Огромный объем за гораздо меньшие деньги, чем ДДР, хорошая производительность. В случае когда требуется в основном чтение данных, и делать часто ничего не требуется. Ну а если много записи, то поработать придется, и результат вероятно будет менее звездный. Тут придется оценивать цены к производительности. Если же приложение вычислительного типа, то вариантов применения ПМем пока немного. Скорее всего должны быть большие объемы статических данных, которые требуется часто загружать для расчетов.
Комментарии (33)
acc0unt
31.01.2022 15:31+10Память Optane - технология крайне интересная, по многим метрикам. Но, увы, на фоне засилия NAND flash она нишевая и до боли дорогая. Практические применения для неё поэтому ограничиваются совсем уж экзотическими решениями, и даже сам Intel мечется, не зная куда бы её применить.
Отчего мы и имеем этот забавный RAM-SSD гибрид. Intel надеется что если с NAND у памяти Optane конкурировать не вышло, то, может, с DDR чего выйдет.
По тексту: "ДДР" и "ПМем" - это какие-то невнятные транслитерации английских аббривеатур, и в тексте они выглядят ну очень уж странно.
drWhy
31.01.2022 18:06+2Не раскрыт вопрос собственно энергонезависимости памяти — вероятно, есть режим её работы, с сохранением данных при перезагрузке или отключении питания. Требуется ли модификация приложений для этого, что именно можно сохранить, и насколько это актуально именно для серверов с аптаймом в годы?
Возможно, позднее будут выпущены пользовательские продукты, позволяющие использовать энергонезависимую память для ускоренной загрузки ОС, ведь восстановление после выключения предполагает в основном чтение из памяти, т.е. оптимальный для PMem режим.fstrlab Автор
31.01.2022 18:15+3Это не было целью, я прежде всего хотел пояснить аспекты производительности. Впрочем, из описания мод сделать выводы можно. Варианты с файловыми системами (AppDirect) естественно обеспечивают энергонезависимость. 2LM и AppDirect Volatile - очевидно не рассчитаны на нее.
avdosev
31.01.2022 23:08+3Требуется ли модификации программ работающих с персистентной памятью?
Существует два режима работы:
- Режим совместимости с dram
- Персистентный режим
Особенность 1 режима в том что вы получаете больший объем dram взамен на скорость доступа, без какой либо персистентности.
Второй режим (в отличие от первого) — персистентный, и работает только при использовании mmap файлов. Этот режим требует модификации кода, и для более менее удобной работы с ним появился pmdk, как удобная обёртка над mmap. Эта обёртка написана на Си и предоставляет низкоуровневый апи, поверх него существует другая обёртка libpmemobj-cpp, которой уже и пользуются большинство разработчиков.
На текущий момент существует как минимум один key-value стор для хранения локальных данных, который способен использовать преимущества персистентной памяти, но я с этой бд не работал (pmemkv называется).
В целом приложения адаптированный под персистентную память действительно могут быстрее стартовать, а в случае адаптированной бд все становится ещё интереснее.
fstrlab Автор
01.02.2022 00:12+2Cуществует уже немало key-value store и других кэшей и БД, нативно поддерживающих PMem. Например Oracle, SAP, Redis, Aerospike, Kx. А если просто в режиме 2LM или Storage over AppDirect, то это практически любое приложение типа Big Data зашуршит в полную силу.
Время перезапуска БД - это один из козырей PMem.
mpa4b
31.01.2022 20:19Интересно, а внутри оно кто? NOR flash?
fstrlab Автор
31.01.2022 20:33+5Никак нет, это 3DXPoint, совместная разработка Интела и Микрона, основана не на транзисторах, а на резисторах. Как говорится, на новых физических принципах... это было реальное открытие.
AlchemistDark
02.02.2022 09:09А как у неё с надёжностью, наработкой на отказ и другими подобными характеристиками?
13werwolf13
01.02.2022 06:43+4когда впервые услышал о "ПМем" первые мысли были "о прикольно, можно swap убрать с диска"
понятное дело что почитав побольше сразу становится боле очевидным другие более адекватные способы применения. но та мысль не отпускает до сих пор (особенно учитывая что я большой фанат гибернации и имею 64Gb ram (и 64Gb swap для неё соответственно) на десктопе).
хотя подозреваю что цена вопроса делает эту идею максимально дебильнойfunny_falcon
01.02.2022 11:15+1Вот-вот!!! Я все удивляюсь, почему производители ноутбуков не ухватились за это? Положить SWAP в PMEM, и иметь настоящую гибернацию (спящий режим) с мгновенным просыпанием. А заявлять этот объём как "расширенная память" (как в смартфонах сейчас пытаются, но с обычным flash).
Особенно бы это зашло в новых макбуках на M1. Настоящей-то ddr в них не много, и не расширяется. Но если б напаяли на материнку 128GB оптана, это была бы бомба даже с 8GB обычной памяти.
nixtonixto
01.02.2022 11:55+2Ноутбукам достаточно режима S3, когда отключается всё, кроме рефреша ОЗУ и опционально — напряжения на ЮСБ-портах (позволяет заряжать телефон вдали от розетки, не пробуждая компьютер). Потребление не очень большое, просыпание — быстрей, чем откинешь экран в рабочее положение. S4 по факту используется очень редко, поэтому потребитель скорее согласится подождать 5...10 секунд, чем будет переплачивать сотни долларов за эту память и чипсет, который её поддерживает.
М1 — вещь в себе и там объём ОЗУ ограничен скорее маркетингом, а не физикой.
fstrlab Автор
01.02.2022 12:02В Linux kernel такие разработки уже идут.
13werwolf13
01.02.2022 12:06в Linux Kernel чего только нет. проблема в том что при неадекватной (по отношению к пользе) стоимости ПМем так и останется игрушкой для песочницы под названием "крупный ЦОД" и не скоро (если вообще когда нибудь) доберётся до десктопов/неттопов/ноутбуков/воркстейшенов..
Veselyi_kot
01.02.2022 09:19Вопрос: а можно ли в Optane, например, в реалтайме дублировать данные из RAM, чтобы при сбое питания в кои-то веки можно было буквально начать с того же места, на котором все остановилось?
Если таки да, и скорости линейной записи (в теории — наиболее оптимального режима) хватит, то это невидимая революция в сфере отказоустойчивости.
P.S. Как я это вижу: у виртуалки есть некий объём объем RAM, ещё столько же зарезервировано физически. Раз в N времени (определяемого скоростью записи в Optane) делается полный слепок ОЗУ на данный момент в зарезервированное пространство (для консистентности) и оттуда записывается в Optane, как только запись завершена – процесс повторяется снова.
Так, в теории, можно добиться того, что даже при серьёзном сбое с питанием можно было бы мгновенно возобновить работу с состояния «секунду назад», просто распаковав этот слепок из Optane обратно в RAM.
ciuafm
01.02.2022 11:48+140 Гб будет бэкапиться секунду. Все это время нельзя использовать основную RAM. Я вижу одну возможность - сделать 2х канальную память и бэкапить в фоне паралельно с DRAM рефреш. Это будет выглядеть как DRAM + Optane + контроллер на каждом DIMM модуле. И процессоры нужно будет обвешать кэшем.
Увидев этого Франкенштейна я подумал, а не дешевле ли подключить батарейное питание к обычной DRAM?
snakers4
01.02.2022 10:08Вот только узнал, зачем все-таки нужна такая память, а Intel кажется уже ее перестали развивать, если память не изменяет =)
ECRV
01.02.2022 22:49+1Придумал классное применение, скорее всего уже велосипед.
Можно в заменить оперативку внутри ССД на ПМ. Получим нормальный энергонезависимый ССД. Объем "кэша" увеличится и станет независимым, а так как его скорость выше пары линий PCI, то получим дешёвый NAND диск, который будет работать со скоростью интерфейса. Даже алгоритм работы с "кэшем" упростится ибо теперь он энергонезависим. Запись конечно у ПМ не бесплатная, потому нужно посчитать так чтобы умирал так же как и NAND
Veselyi_kot
02.02.2022 11:46А не проще ли засунуть в SSD батарейку (да хотя бы ту же CR2032, ради унификации) для «поддержания штанов» RAM-кэша при незапланированном отключении?
ECRV
02.02.2022 12:10Точно не проще, у нее ток отдачи 3мА от силы, хватит в лучшем случае на поддержание оперативки, но никак не на запись содержимого в NAND. Это конкретно про вашу реализацию, литиевого аккумулятора хватит на такие задачи.
Сама идея интересная из-за того что самой памяти больше, считай в 8 раз. Заменил одни камни на другие и у тебя почтибесеонечный кэш, именно в этом месте скорость записи возрастает. Так кэш ещё и энергонезависим!
Veselyi_kot
02.02.2022 16:56Так я и не говорю про запись, я говорю про сохранение буфера в случае внезапного отключения. А дописывать оттуда уже когда свет дадут.
edo1h
02.02.2022 13:00+1А не проще ли засунуть в SSD батарейку (да хотя бы ту же CR2032, ради унификации) для «поддержания штанов» RAM-кэша при незапланированном отключении?
на серверных ssd так и есть, только не батарейка, а ионисторы.
ключевое слово для гугла — plp
edo1h
02.02.2022 13:28Объем "кэша" увеличится и станет независимым, а так как его скорость выше пары линий PCI
не факт, что выше. высокие скорости на optane обеспечиваются параллельностью, на накопителях небольшого объёма линейные скорости низкие.
ну и не уверен, что совсем без dram получится обойтись, небольшой объём для работы прошивки потребуется, думаю (условно, счётчик цикла невыгодно хранить в pmem из-за более высоких задержек; на серверных процессорах это решается большими объёмами кэшей).
гибрид, кстати, intel выпутил, называется h10/h20, но…
The Optane Memory H10 does not introduce any new ASICs or any hardware to make the Optane and QLC portions of the drive appear as a single device. The caching is managed entirely in software, and the host system accesses the Optane and QLC sides of the H10 independently. Each half of the drive has two PCIe lanes dedicated to it.
https://www.anandtech.com/show/14249/the-intel-optane-memory-h10-review-two-ssds-in-one
https://www.anandtech.com/show/16681/optane-memory-h20-enmotus-fuzedrive-ssd-reviewполучилось достаточно уныло.
P. S. насколько я знаю, dram на ssd используется в основном для кэширования не данных, а таблицы трансляции.
ECRV
02.02.2022 13:35Параллелизм будет. Контроллер памяти честно, полностью паралельно подключить к ПМ. Это в сторону SATA или PCI у него узкое горлышко.
Ну и повторюсь, что, конечно же, если бы это было было хорошей идеей, то уже точно сделано
zuborg
02.02.2022 18:05Штука, конечно, интересная, но цена...
64GB ECC DDR4 стоит меньше 350$, а Optane 128G дешевле 700$ не найти - ну никак не получается "огромный объем за гораздо меньшие деньги, чем ДДР"
fstrlab Автор
03.02.2022 13:54корректно сравнивать 128ГБ Optane с 128ГБ DDR. Я слышал, что в этом случае для оптовых закупок цена ниже более чем вдвое, возможно существенно более. Думаю, что если просто погуглить, то можно найти только неадекватные цены в связи с низкой распространенностью Optane на розничном рынке.
alan008
https://habr.com/ru/company/intel/blog/457540/
Можете написать, как изменились цены на такую память с тех пор? (по сравнению с цифрами из вышеприведенного анонса).
fstrlab Автор
по ценам я не спец...