NVMe приходит на помощь
Отчасти решить эту проблему помогает на порядок более быстрая флэш-память. Для нее разрабатываются новые протоколы и технологии, раскрывающие потенциал интерфейса PCIe, например, Non-Volatile Memory Express (NVMe). Флэш-память NVMe позволяет устранить значительные задержки оборудования и издержки протоколов, связанные с хранением, и может применяться для повышения общей производительности системы, особенно в таких ресурсоемких задачах, как виртуализация, аналитика больших данных и высокопроизводительные вычисления (HPC). С помощью NVMe можно получать доступ к флэш-памяти, минуя прослойку SCSI, что уменьшает время доступа, особенно в случае аппаратной поддержки NVMe, когда функции драйвера реализуются на аппаратном уровне.
Масштабируемая технология NVMe разрабатывалась специально для прямого подключения устройств NVMe (таких как SSD) через интерфейс PCIe Gen3. Она обеспечивает быстрый доступ процессора к данным во флеш-памяти и характеризуется, высокой производительностью в IOPS, малым энергопотреблением и низкими задержками. Поставки первых продуктов NVMe начались в 2014 году. В 2015-м многие вендоры серверов представили свои платформы со слотами NVMe.
NVMe позволяет повысить производительность системы за счет более полного использования параллелизма устройств и программного обеспечения. Накопитель становится «ближе» к процессору, что дает возможность снизить задержку более чем в 20 раз.
В настоящее время в серверах твердотельные накопители (Solid State Drive, SSD) обеспечивают высокую скорость доступа к данным и иногда применяются в качестве кэш-памяти или для хранения промежуточных данных. Не удивительно, что флэш-накопители уверенно завоевывают рынок. По прогнозу компании IHS, к 2017 году поставки SSD в натуральном выражении достигнут половины объема поставок жестких дисков.
В арсенале компании Hewlett Packard Enterprise – целый спектр накопителей c поддержкой протокола Non-Volatile Memory Express. В этих решениях HPE используются разные форматы накопителей под различные типы нагрузок, включая 2,5" SFF и карты PCIe. Стандартные драйверы NVMe включены в состав наиболее популярных операционных систем. Однако NVMe уже становится «лучшей практикой» вчерашнего дня. В вершине пирамиды её сменяет новая технология – Persistent Memory.
HPE Persistent Memory
Технология HPE Persistent Memory (что означает «энергонезависимая» или «постоянная память») нова не только оригинальным архитектурным решением – размещением энергонезависимого флэш-накопителя на шине памяти, – но и комплексным подходом. Под нее уже есть драйвер для Microsoft Windows, SDK для Linux, в ближайших планах – научить приложения понимать этот новый тип носителя, что обеспечит, например, поддержку вычислений in-memory на этих модулях без различных ухищрений по сохранности данных.
Что же представляет собой HPE Persistent Memory? Упрощенно говоря, это энергонезависимая память с производительностью оперативной памяти. Будучи энергонезависимой, эта память обеспечивает постоянное хранение данных. Технология HPE Persistent Memory, представленная в декабре 2015 года, используется в линейке продуктов HPE ProLiant 2016 года. Большинство из таких систем уже поставляются.
Persistent Memory (или Non-Volatile Memory) – комбинация DRAM с флэш-памятью, которая позволяет избежать потери данных при отключении питания. Поскольку DRAM (модуль DIMM) и NAND «сидят» на шине памяти, данная комбинация работает быстрее, чем флэш-память на карте PCIe.
По своим характеристикам HPE Persistent Memory (NVDIMM) занимает в пирамиде разных видов памяти промежуточное положение между оперативной памятью DRAM и флэш-памятью. В каких же приложениях эта новая технология демонстрирует свои лучшие качества? Прежде всего, это аналитика и базы данных.
При наличии в системе такой постоянной памяти приложения могут хранить больше данных в ОЗУ и реже обращаться к намного более медленным накопителям SSD или HDD. Как показывают первые результаты тестирования, новая технология увеличивает производительность приложений баз данных и аналитики в 2-10 раз. Например, при работе с SQL Server память NVDIMM способна вдвое увеличить скорость записи логов базы данных и на порядок ускорить аналитику SPARK.
Как показывает демонстрационный пример, в котором используются серверы HPE ProLiant Gen9 и СУБД Microsoft SQL Server, переход от накопителей SSD к SSD с дополнительной «прослойкой» в виде модулей памяти NVDIMM (кэш) практически вдвое снижает показатель задержки при записи и значительно увеличивает производительность в транзакциях в мин. Сейчас это 1 000 000 транзакций в секунду, но теоретически уже достижимы значения до 4-5 млн. транзакций в секунду.
Сейчас серверы ProLiant Gen 9 с модулями NVDIMM поставляются с ОС Windows или Linux (Red Hat и SUSE), поддерживают СУБД Microsoft (SQL Server) и аналитику Hortonworks.
Вместе с отраслевыми поставщиками операционных систем и приложений HPE работает над созданием экосистемы ПО для поддержки энергонезависимой памяти HPE и упрощения ее внедрения для заказчиков серверов HPE ProLiant. То есть одновременно с выпуском аппаратного обеспечения под технологию Persistent Memory формируется экосистема аппаратного и программного обеспечения. Для этого HPE сотрудничает с ведущими разработчиками операционных систем, включая Microsoft, Red Hat, SuSE, а также с независимыми поставщиками ПО (ISV). Совместно с Microsoft ведутся работы по оптимизации SQL Server. Посмотрим подробнее, что представляют собой серверы ProLiant Gen 9.
Новые серверы HPE ProLiant Gen9 с технологией Persistent Memory
В марте 2016 года компания HPE объявила о выпуске новых вычислительных платформ со встроенной поддержкой Persistent Memory. Новые серверы HPE ProLiant Gen9 с процессорами Intel Xeon E5-2600 v4 ускоряют предоставление услуг, повышают производительность приложений и обеспечивают надежность бизнес-операций.
Они оптимизированы для первого продукта в линейке решений с энергонезависимой памятью HPE Persistent Memory – 8-гигабайтных модулей HPE NVDIMM (ожидается выпуск модулей памяти на 16 Гбайт). Данная технология хорошо подходит для всех приложений, на которые влияют традиционные узкие места систем хранения данных.
8-гигабайтный модуль HPE NVDIMM доступен для заказа с апреля 2016 года и уже поддерживается серверами HPE ProLiant DL360 и DL380 Gen9 с процессорами Intel E5-2600 v4. Модуль HPE 8GB NVDIMM построен на базе стандартной отраслевой технологии NVDIMM-N в сотрудничестве с организациями по стандартизации JEDEC и SNIA и включает в себя резервное питание от аккумулятора HPE Smart Storage Battery, поддерживающего до 16 модулей NVDIMM, для перемещения данных из DRAM на флэш-память при потере питания.
Результаты тестирования сервера HPE ProLiant Gen9 с СУБД PostgreSQL
В Центре Высоких Технологий HPE новые серверные платформы DL380 Gen9 были протестированы с СУБД PostgreSQL. Тесты проводились специалистами HPE совместно с разработчиками из компании Postgres Pro (https://postgrespro.ru/) в разных конфигурациях.
Почему именно PostgreSQL? Это полнофункциональная СУБД с открытым кодом, позволяющая решать широкий круг задач. За время существования PostgreSQL вокруг нее сформировалась экосистема, включающая разработчиков, аналитиков и пользователей, благодаря чему имеется возможность расширять функции этой СУБД в зависимости от требований рынка.
PostgreSQL используется и в государственных, и в коммерческих организациях по всему миру, и популярность ее растет, в том числе как раз потому, что на текущий момент PostgreSQL удовлетворяет требованиям, предъявляемым к промышленным СУБД, и считается наиболее совершенной из свободно распространяемых СУБД общего назначения, а рост спроса на решения Open Source – глобальная тенденция. В нашей стране PostgreSQL использует ряд крупных компаний (Yandex, Avito, HeadHunter, Mail.Ru и др.). Интерес к PostgreSQL растет.
Производительность СУБД PostgreSQL с разными типами внутреннего хранилища на серверах HPE ProLiant Gen9 показана ниже.
Как видно из таблицы, результаты действительно выдающиеся. И перспективы открываются очень интересные.
Новые «правила игры»
Из всего этого следует, что «лучшая практика» хранения должна теперь выглядеть примерно так:
В этой многоуровневой архитектуре хранения нулевой уровень Tier 0 представляет самую быструю, а Tier 3 – самую медленную память. При хранении горячих и холодных данных учитывается производительность, емкость и стоимость хранения. Обычно, чем горячее данные, тем выше $/GB и ниже требования к емкости. Традиционные уровни хранения слева представляют:
Tier 0 = PCIe SSD и PCIe Workload Accelerator (флэш-память NAND на SAS/SATA или шине PCIe), задержка 100 микросекунд.
Tier 1 = SAS HDD (высокопроизводительные диски), задержка десятки миллисекунд.
Tier 2 = SATA HDD (диски большой емкости), задержка сонти миллисекунд.
Tier 3 = магнитная лента или архивный носитель, задержка – секунды и минуты.
Справа – новые устройства хранения. Иерархия выглядит так:
Tier 0 = NVDIMM, задержка – наносекунды.
Tier 1 = PCIe SSD и PCIe Workload Accelerators (флэш-память NAND на SAS/SATA или на шине PCIe), задержка 100 микросекунд.
Tier 2 = SAS HDD (высокопроизводительные диски), задержка десятки миллисекунд.
Tier 3 = SATA HDD (диски большой емкости), задержка сотни миллисекунд.
Таким образом, память NVDIMM заменяет накопители на флэш-памяти PCIe NAND как самые быстрые устройства хранения, меняется архитектура вычислительной системы.
Разработанная HPE технология Persistent Memory меняет правила игры на серверном рынке. Она станет важной вехой на пути к совершенно новой компьютерной архитектуре под названием HPE Machine, разрабатываемой с 2014 года. В Machine с мемристорной памятью переосмысливается фон-неймановская архитектура, доминирующая с начала компьютерной эры.
Все это можно назвать переходом к новой вычислительной модели – Memory-Driving Computing, где память играет одну из ведущих ролей. Ее воплощением уже стали серверы HPE ProLiant Gen9. Но Memory-Driving Computing, вычисления в памяти – это не просто «железо» с новой архитектурой памяти, но и целая экосистема программного обеспечения. Для этого HPE работает в тесном взаимодействии с разработчиками операционных систем и прикладного софта.
И в заключение — небольшое яркое видео:
Комментарии (56)
horlon
25.04.2016 15:58-1«Упрощенно говоря, это энергонезависимая память с производительностью оперативной памяти.»
Такого просто быть не может время изменения состояния ячейки Flash всегда больше времени закрытия/открытия транзистора. Но есть одно но — ресурс Flash памяти всегда ниже ресурса RAM из-за ограничения циклов перехаписи (Flash). И это обеспечивает стабильный рынок сбыта для компаний из-за частого выхода из строя таких устройств.
В скором будущем:
— RAM которая имеет ограничение количества циклов перезаписи.
— Рубашка, которая распадается после истечении оплаченного времени.
…
— Голова, которая отваливается по истечении оплаченого времени пользования мозгом.Tigger
25.04.2016 16:19+2Вы просто не обратили внимание на описание технологии. Модуль Persistent Memory — это модуль DRAM DDR4 + размещенная на той же плате энергонезависимая флешка. Она используется в том случае, если пропадает питание или происходит другой сбой, который требует защиты данных в памяти. В этом случае с помощью батарейки данные копируются из чипов DRAM на флешку.
Ziptar
03.05.2016 02:22Окей. Только на данный это вещь-в-себе. DRAM — далеко не вся энергозависимая память, физически присутствующая в современных пк. Как возникающие проблемы с прочим оборудованием будем решать?
bormanman
25.04.2016 18:15При цене в $899 за 8Gb планку памяти, сей чудный девайс в массы ещё долго будет добираться.
Tigger
25.04.2016 18:18Ну как сказать. На тестовом сервере с PostgreSQL, стоимостью в прайс-листе около 30k USD мы достигли результатов, о которых раньше можно было думать только с системой на порядок (а то и больше) дороже. Так что в массы, конечно, решение дойдет не завтра, но интерес определенно есть :)
ChALkeRx
25.04.2016 18:15Это просто 8 ГиБ DRAM + 8 ГиБ Flash + запас энергии?
Только не говорите что это вместо давно обещанной памяти на мемристорах, пожалуйста.Tigger
25.04.2016 18:20Запас энергии идет отдельно — модуль питается от той же батарейки, что и кэш контроллера Smart Array.
Ну и конечно это не вместо мемристоров — это только предвестник. Технология для прокладывания дороги, доработки софтовой экосистемы. Но технология эта сама по себе уже достойна внимания.
Tigger
25.04.2016 18:46К слову, небольшой конкурс — флешка (обычная USB-флешка :) ) в подарок тому, что первым определит модель самолета по силуэту:
http://www8.hp.com/us/en/products/servers/qualified-options/persistent.html
miksoft
25.04.2016 19:28И, кстати, передайте отдельное «спасибо» тому, кто воткнул картинку размером 6671*2283 пикселей на веб-страничку.
Tigger
25.04.2016 20:48А вдруг вы с 4K монитора захотите посмотреть этот сайт :) Размер картинки, тем не менее, всего 80 КБ. Но спасибо за замечание, наш сайт мы улучшать любим.
Tigger
25.04.2016 20:22Заранее извиняюсь за оффтоп, не хочется сделать это веткой авиафорума :) Большинство экспертов (в т.ч. в NASA :) ) утверждают, что это силуэт Су-27. Значит наш победитель — miksoft! Ура! :)
Но конечно никакого умысла в выборе картинки нет, просто дизайнерам силуэт показался очень динамичным (еще бы! :) ).
interrupt
26.04.2016 01:08А как это выглядит с точки зрения системного программиста?
Я же правильно догадываюсь, что есть некий драйвер, позволяющий отобразить в виртуальное адресное пространство процесса регион из данной персистентной памяти, и где то сохранить это отображение, так что после рестарта приложение может «подобрать» этот регион с сохраненными ранее данными?
Запись в данную память ведь происходит в обход кешей CPU?
PavelBelyaev
26.04.2016 05:41А пока эти технологии добираются в массы — вполне можно обойтись быстрым сливом оперативки в SSD + бесперебойник. И вроде как софт для UPS умеет в гибернацию комп отправлять, а потом загружать с того же места всё. Меня вот печалят только бесперебойники, куча преобразований, сперва с 12 на 220, потом с 220 на 12 и 5 и 3, хотя можно было бы сделать UPS размером с CD-ROM и подключать его как промежуточные штекеры между разъемами на материнке и приводах, может быть тогда можно было достичь компактности и автономности как на ноутбуках.
kasperos
26.04.2016 08:17Оптимально 220 преобразовать в 4 по 10,5/13,4 В (около 48 вольт) а уже с аккумуляторов выдавать на питания ЭВМ.
48 вольт постоянного тока относительно безопасно если на язычок не пробовать и КЗ не кидать и избавляемся от потерь при лишнем преобразовании, ну и средний ток около 10 ампер на нагрузку около 500 ватт вполне приемлем вместо 40-50 ампер с 12-и вольт.
trampazlin
26.04.2016 14:51+1И всё-таки HPE хоронит ленту — https://habrastorage.org/files/f1a/135/9cd/f1a1359cdde844e5985182928adb9512.png
trampazlin
26.04.2016 19:19И тем не менее в новой иерархии хранения, которую предлагает HPE, для ленты места не нашлось.
Tigger
26.04.2016 19:37Нашлось — я же показал. А вообще это просто картинка, не имеющая к судьбе лент никакого отношения. Мы сравнительно недавно запустили у себя LTO-7 и активно предлагаем ленты заказчикам.
trampazlin
26.04.2016 19:47Вот текст вашего поста. Где тут место для ленты?
«Справа – новые устройства хранения. Иерархия выглядит так:
Tier 0 = NVDIMM, задержка – наносекунды.
Tier 1 = PCIe SSD и PCIe Workload Accelerators (флэш-память NAND на SAS/SATA или на шине PCIe), задержка 100 микросекунд.
Tier 2 = SAS HDD (высокопроизводительные диски), задержка десятки миллисекунд.
Tier 3 = SATA HDD (диски большой емкости), задержка сотни миллисекунд.»
alex-khv
27.04.2016 09:19По большому счету:
Интеграция с ОС — это драйвера как у любого программного RAM диска.
Интеграция с софтов — это тюнинг софта. Чтобы он не использовал кэширование на всех уровнях.
Так?Tigger
27.04.2016 09:53Интеграция с ОС — да, драйверы, которые могут презентовать этот диск системе, как блочное устройство. Летом драйверы войдут в стандартную поставку WS16, чуть позже в ядро Linux.
Софт — тоже да.
И это уже готово, это не планы.
miksoft
«Persistent Memory (или Non-Volatile Memory) – комбинация DRAM с флэш-памятью, которая позволяет избежать потери данных при отключении питания. Поскольку DRAM (модуль DIMM) и NAND «сидят» на шине памяти, данная комбинация работает быстрее, чем флэш-память на карте PCIe. Вместе с тем, она дешевле DRAM DIMM «в чистом виде».»
Я правильно понимаю, что тут говорится, что комбинация модуль 8 ГБ DRAM + модуль 8 ГБ флэш будет стоить дешевле, чем просто модуль 8 ГБ DRAM?
Tigger
Прошу прощения, утверждение, что новые модули Persistent Memory дешевле, чем обычные модули памяти — неверное. Убрал его из текста.
А модуль Persistent Memory сам уже представляет собой комбинацию DRAM и флэш, на одной плате.
miksoft
«А модуль Persistent Memory сам уже представляет собой комбинацию DRAM и флэш, на одной плате. „
Можете пояснить, как будет соотноситься стоимость модуля N ГБ DRAM + K ГБ флэш и просто модуля N+K ГБ DRAM?
Tigger
Поясните что вы подразумеваете под модулем N ГБ DRAM + K ГБ флэш, пожалуйста.
miksoft
То, что Вы обозначаете как «комбинацию DRAM и флэш, на одной плате» :)
Tigger
Я подразумеваю, и вся статья посвящена, одному единственному модулю 8 ГБ:
782692-B21 HPE 8GB NVDIMM 1R x4 DDR4-2133 Kit
Это именно DRAM + флэш на одной плате.
С чем бы Вы хотели его сравнить?
miksoft
Если я правильно понимаю, то на нем 8 ГБ DRAM и 8 ГБ флэша.
Как будет соотноситься его стоимость со стоимостью модуля 16 ГБ DRAM аналогичного класса?
Tigger
Примерно в 3 раза дороже. И примерно в 3,5 раза дороже модуля 8 ГБ — это сравнение более релевантное, т.к. с модулем NVDIMM системе доступно только 8ГБ памяти в виде блочного устройства хранения.
miksoft
Тогда получается, что выгоднее купить вдвое больше оперативной памяти и получить производительность «all database in RAM». Будет и быстрее, и дешевле.
А энергонезависимость, имхо, не очень-то и нужна, сервера такого небюджетного класса все равно без UPS-ов обычно не ставят, сохранить изменённые данные они успеют и на обычные диски (SSD/HDD).
Tigger
Тут дело скорее не в защите как таковой, а в методе, которым она реализуется. Конечно, in-memory вычисления не вчера появились, и как их использовать безопасно все уже научились. Но текущая реализация «сохранить данные на обычные диски» просто на порядок сложнее, чем просто работать с DRAM, не думая вообще что будет если отключится питание. Такой новый подход делает софт сильно проще, а значит в большинстве случаев дешевле на многие тысячи долларов — так что разница в цене окупается с лихвой.
miksoft
Операция «сохранить данные на обычные диски», может быть, и сложнее, но она уже давно реализована, отлажена и т.д. Она выполняется при получении сигнала от UPS-а.
А в случае с этими новыми модулями еще приходится «строить экосистему», т.е. это расходы, которые, конечно, войдут в стоимость этих модулей и серверов.
Единственный плюс, который я вижу — меньше понадобится времени при включении на прогрев кэшей. Но это величина, имхо, порядка нескольких минут экономии в год.
Tigger
Стоимость модулей вы уже знаете, стоимость серверов от использования модулей никак не меняется. Экосистему сейчас надо строить только в ту сторону, чтобы больше видов софта научились понимать, что в сервере есть такая память и не делали попыток следить за электропитанием (это если упростить). И она уже во многом готова — у нас есть драйвер для WS (в WS16 — нативный), SDK для Linux (скоро драйверы в ядре), поддержка в SQL Server 16 (в превью). Дальше будет больше. Прогресс не остановить :)
miksoft
А можете в табличку производительности добавить колонку «Полная стоимость сервера» и еще колонку с производительностью, отнормированной по этой стоимости?
Все-таки не покидает меня ощущение, что последняя строчка с «all database in RAM» окажется выгоднее.
Tigger
В ту же табличку разрешите полениться вставлять, но вот условные цены в прайс-листе:
конфигурация с 4xSAS 146 GB — 23705
2xSATA SSD 200 GB — 23355
2xNVMe 400 GB — 26275
2xNVMe 400 GB + 2xNVDIMM — 28425
Если сравнивать с 2xSSD — разница в цене 20%, а в производительности — 20 раз :)
Разница с конфигурацией, где мы все держим в памяти по цене на 25%, по производительности в 2,5 раза меньше. Но это все на open source PostgreSQL, где in-memory ничего не стоит. Во всех проприетарных СУБД in-memory как правило стоит заметных дополнительных денег. Ну и вообще мало кто до сих пор решится положить продуктивную базу в энергонезащищенную память, несмотря на отработанные технологии защиты данных :)
kasperos
Хорошо, ваши модули умеют сохранять информацию если «внезапно» пропадет электричество, а как быть с 9 мегабайтами хлама (половина от 18 мен кеша например) необловленного из кэша процессора? По условиям задачи процессор уже уснул и все забыл. То есть надо при записи данных обязательно писать все сразу в основную память напрямую, иначе будет полная неразбериха после «внезапно отключился». Вы такой сценарий продумывали?
Tigger
Кэш процессора мы здесь не учитываем и его не зазищаем. Что у нас есть сейчас — блочное устройство, работающее на близком к DRAM уровне производительности. Данные с этого устройства при выключении питания бэкапятся, а потом возвращаются обратно в DRAM. Софт должен уметь этим пользоваться, чтобы получалась какая-то польза.
kasperos
Вопрос снимается в этой постановке, эти модули проецируются на основную память и «должны» использоваться «только» как физически реализованный RAM-диск со встроенным сохранением. Но кривой софт может там и программу запустить, и данные хранить абы как. В любом случае остается вопрос сохранения данных из мест незащищенных от внезапной пропажи питания.
Tigger
Софт не сможет запустить там программу, т.к. не увидит этот модуль без драйвера в ОС. А драйвер не даст использовать это пространство для исполнения кода. Защита кэша процессора — да, это другая задача.
kasperos
Если идет проецирование в адресное пространство процессора, то без защиты со стороны ОС ваши модули будут спроецированы на основное пространство со всеми вытекающими возможностями. Кроме того, если вы пишите про SSD доступ сотни микросекунд (хотя современные позволяют осуществлять IOPS 50 000+ что дает нам «десятки» 20 мкс и меньше), то и про свою память пишите что к ней можно получить доступ со скоростью десятки наносекунд а не единицы. Для динамической памяти скорость случайного доступа держится сейчас в районе 10-13 нс вроде, плюс время передачи пакета, для аналога ddr4 3200 это будет «0,3 нс» * «512 байт» / «8 размер слова» = 20 нс итого около 30 нс.