www.team.ru
Поиск
sales@team.ru

Intel Optane DC Persistent Memory в серверах

В июле 2015 года компании Intel и Micron анонсировали принципиально новую технологию энергонезависимой памяти – 3D XPoint (читается «3D crosspoint»).

Память 3D XPoint на один-два порядка быстрее традиционной энергонезависимой памяти NAND – основы большинства современных твердотельных накопителей. Кроме того, ее ресурс перезаписи тоже на два порядка выше, чем у обычной флэш-памяти. 3D XPoint допускает побайтовое чтение и запись в отличие от NAND, которая позволяет читать и записывать блоки данных размером не менее 4KB.

С другой стороны, 3D XPoint примерно в пять раз медленнее энергозависимой памяти DRAM, используемой в качестве оперативной памяти в компьютерах и серверах.

Основанные на технологии 3D XPoint устройства компании Intel выпускаются под торговой маркой Optane.

В настоящее время в серверах, в том числе и в наших серверах Team, применяются твердотельные NVMe-накопители Intel Optane DC P4800X с памятью 3D XPoint и интерфейсом PCIe 3.0 x4, выполненные либо в виде плат расширения, устанавливаемых в слоты PCIe, либо в виде «обычных» накопителей 2,5”, устанавливаемых в дисковую корзину и подключаемых к специальным разъемам для накопителей NVMe.

Хотя 3D XPoint существенно быстрее NAND, дополнительные задержки, вносимые интерфейсом PCIe, не позволяют накопителям Optane NVMe полностью раскрыть свой скоростной потенциал, поэтому SSD NVMe на базе 3D XPoint и SSD NVMe на базе NAND демонстрируют схожую производительность, значительно отличаясь друг от друга только по ресурсу записи.

Однако недавно компания Intel представила новую реинкарнацию памяти 3D XPoint, в которой сочетание ее уникальных возможностей – быстродействия, выносливости, побайтовой адресации и энергонезависимости – способно проявить себя в полной мере.

Это случилось в апреле этого года, когда компания Intel объявила о начале продаж модулей памяти, основанных на технологии 3D XPoint и предназначенных для установки в разъемы оперативной памяти на материнской плате. Такие модули получили название Intel Optane Data Center Persistent Memory Module (DCPMM).

 Модуль памяти Intel Optane DC Persistent Memory емкостью 128GB
Рисунок 1. Модуль памяти Intel Optane DC Persistent Memory емкостью 128GB

Из следующего графика понятно, почему с появлением нового интерфейса для 3D XPoint можно ожидать качественного скачка производительности устройств на ее основе.

Величина задержки различных устройств хранения данных для единичного запроса на чтение блока
Диаграмма 1. Величина задержки различных устройств хранения данных для единичного запроса на чтение блока размером 4KB (случайный доступ) в наносекундах (логарифмическая шкала)

Новый интерфейс избавлен от заметных временных потерь - из графика видно, что величина задержки, вносимая интерфейсом PCIe и ПО (операционной и файловой системами и драйверами), для накопителей Optane (PCIe) составляет около 10 микросекунд в сравнении с Optane (DIMM).

Кроме того, новый интерфейс обладает существенно большей пропускной способностью. Если накопитель NVMe, подключаемый обычно по четырем линиям PCIe, имеет пропускную способность интерфейса 4GB/s, модуль Persistent Memory «шириной» 8 байт, устанавливаемый в стандартный слот DIMM и работающий на эффективной частоте 2’667 MHz/s, имеет полосу пропускания 21GB/s. С учетом того, что все шесть каналов интегрированных в процессор двух контроллеров оперативной памяти работают параллельно, суммарная пропускная способность интерфейса для шести модулей Optane составляет 126 GB/s.

Далее я буду использовать следующие сокращения:

  • DCPM – Intel Optane Data Center Persistent Memory
  • DCPMM - Intel Optane Data Center Persistent Memory Module

Intel предлагает DCPM модули трех номиналов: 128GB, 256GB и 512GB. Ресурс записи очень большой: для модуля 128GB он составляет 1250 ежедневных полных перезаписей (DWPD) на протяжении 5 лет, для модуля 256GB – 750 DWPD, для модуля 512GB – 320 DWPD. Чтобы исчерпать ресурс модуля 128GB, который составляет 290 Петабайт (128GB x 1250 x 365 x 5), за гарантированные производителем 5 лет, необходимо на протяжении этого срока непрерывно записывать на него данные со скоростью 1,85GB в секунду. Интересно, что Intel заявляет для этого модуля именно такую максимально возможную скорость записи при размере блока 256 байт.

Мы протестировали модули DCPM на платформах Intel и Supermicro. В этой статье я расскажу о системных требованиях со стороны Intel Persistent Memory, сценариях использования, задачах, для которых применение памяти Optane обещает быть эффективным, а также поделюсь результатами тестирования.

Системные требования и режимы работы Intel DC Persistent Memory

Модули памяти Intel Persistent Memory можно устанавливать в серверы на базе процессоров Intel Xeon Scalable 2-го поколения. Эта память поддерживается следующими моделями процессоров:

  • Intel Xeon Platinum 82XX (все модели)
  • Intel Xeon Gold 62XX (все модели)
  • Intel Xeon Gold 52XX (все модели)
  • Intel Xeon Silver 4215

Intel Persistent Memory должна всегда использоваться вместе с обычной памятью DRAM. Следует учитывать, что суммарный объем DRAM и DCPM, подключенных к одному процессору, не должен превышать максимального объема памяти, разрешенного для данной модели процессора:

  • 4,5 TB - для процессоров с индексом «L»
  • 2,0 TB - для процессоров с индексом «M»
  • 1,0 TB - для всех остальных процессоров

Intel Persistent Memory может работать в трех режимах: Memory Mode, App Direct Mode и Mixed Mode, который является комбинацией первых двух. Режим работы памяти выбирается в BIOS сервера.

Memory Mode

В Memory Mode модули Persistent Memory используются в качестве оперативной памяти, а стандартные модули DIMM – в качестве кэш-памяти верхнего уровня (L4). Операционная система в этом режиме «видит» оперативную память, включающую только модули Persistent Memory.

Использование Memory Mode может оказаться выгодным для приложений, требующих значительного объема оперативной памяти, по следующим причинам.

Во-первых, Persistent Memory дешевле «обычной» памяти DRAM. Например, на момент написания этой статьи модуль DCPM 128GB более чем в три раза дешевле модуля DRAM 128GB и в два раза дешевле пары модулей DRAM 64GB.

Во-вторых, при использовании Persistent Memory можно получить больший объем оперативной памяти в сервере. Например, для двухпроцессорного сервера с использованием DRAM можно установить только 3072GB оперативной памяти (24 модуля по 128GB, модули большего объема пока недоступны), а с использованием Intel Persistent Memory объем ОЗУ можно довести до 6144GB, установив 12 модулей DCPM 512GB. Правда, в этом случае потребуется установка еще 12 модулей DRAM по 32GB или 64GB для использования в качестве кэш-памяти L4 (этот объем памяти не будет виден операционной системе).

Примеры приложений, которые могут выиграть от увеличения объема оперативной памяти: кэш-память больших SQL баз данных, хранилище индексов поисковых алгоритмов, платформы виртуальных машин, высокопроизводительные вычисления, трейдинг. В общем, любые приложения, требовательные к объему оперативной памяти.

Хотя Persistent Memory в несколько раз медленнее памяти DRAM по времени отклика (задержке), производительность подсистемы памяти на базе DCPM + DRAM (L4) лишь незначительно ниже «обычной» DRAM. Почему? Во-первых, пропускная способность у DCPM сопоставима с DRAM (для шести модулей она составляет при чтении около 50GB/s и 20GB/s при записи, для DRAM порядка 110/100 GB/s соответственно). Во-вторых, разница в скорости нивелируется наличием большого объема кэш-памяти, в роли которой выступает DRAM. Дело в том, что данные, находящиеся в оперативной памяти, различаются по степени «востребованности» приложениями. «Горячие» данные, к которым приложения обращаются чаще, будут присутствовать в кэш-памяти и их обработка будет выполняться со скоростью DRAM. Обращения к «холодным» данным из Persistent Memory выполняются реже и меньше влияют на общую производительность.

При выборе конфигурации сервера с использованием модулей Persistent Memory для работы в Memory Mode необходимо придерживаться следующих правил:

  • все модули DCPM должны быть одинаковыми
  • все модули DIMM должны быть одинаковыми
  • модули DIMM Single Rank x8 использовать нельзя
  • число модулей DIMM должно быть равно или больше числа модулей DCPM
  • минимальное количество модулей DCPM – 1 модуль на CPU, в этом случае используется только первый контроллер памяти IMC0 процессора, слоты второго контроллера IMC1 остаются пустыми
  • максимальное количество модулей DCPM – 6 модулей на CPU или 12 модулей на двухпроцессорный сервер
  • если используются оба контроллера памяти процессора, расположение модулей памяти на обоих контроллерах должно быть симметричным
  • если в сервере установлено два процессора, расположение модулей памяти на обоих процессорах должно быть одинаковым
  • в один канал контроллера памяти можно установить не более одного модуля DCPM
  • если модуль DCPM устанавливается в канал вместе с модулем DIMM, он должен располагаться в ближнем к процессору слоте (слот 1)
  • если модуль DCPM устанавливается в канал без модуля DIMM, он должен располагаться в дальнем от процессора слоте (слот 0)
  • объем модулей DIMM во всех каналах, где они установлены, должен быть одинаковым
  • соотношение объемов памяти DCPM и DIMM в сервере должно находиться в диапазоне от 16:1 до 4:1 (чем меньше, тем быстрее, но дороже).

Примеры корректной установки модулей DCPM и DIMM для одного процессора (на втором – аналогично) для Memory Mode:

CPU 0 / 1
IMC 1IMC 0
Channel 2 (F)Channel 1 (E)Channel 0 (D)Channel 0 (A)Channel 1 (B)Channel 2 (C)
F1F2E1E2D1D2A2A1B2B1C2C1
              DIMM   DIMM   DCPMM
            DCPMM DIMM   DIMM   DIMM
DCPMM   DIMM   DIMM     DIMM   DIMM   DCPMM
DIMM   DIMM   DIMM DCPMM DCPMM DIMM   DIMM   DIMM
DCPMM   DIMM DIMM DIMM DIMM DIMM DIMM DIMM DIMM   DCPMM
DIMM   DIMM DCPMM DIMM DCPMM DCPMM DIMM DCPMM DIMM   DIMM
DIMM DCPMM DIMM DCPMM DIMM DCPMM DCPMM DIMM DCPMM DIMM DCPMM DIMM
Рисунок 2. Примеры корректной установки модулей DCPM и DIMM (DRAM) для Memory Mode

На момент тестирования Persistent Memory в Memory Mode мы располагали только двумя модулями DCPM емкостью 128GB, поэтому сравнили две однопроцессорные конфигурации с точки зрения быстродействия подсистемы памяти:

1) 4 модуля DIMM 16GB, объем ОЗУ 64GB, рабочая частота 2666 MHz
2) 2 модуля DCPM 128GB, 4 модуля DIMM 16GB, объем ОЗУ 256GB, рабочая частота 2666 MHz, соотношение объемов DCPMM и DIMM 4:1

Результаты тестирования приведены на графике:

Пропускная способность подсистемы памяти
Диаграмма 2. Пропускная способность подсистемы памяти на операциях случайного чтения и записи
для DIMM и DCPM

При задействовании 6 каналов контроллера для модулей DCPM и том же соотношении объемов DCPMM и DIMM 4:1 (6 модулей DCPM 128GB и 6 модулей DIMM 32GB) разница в производительности DCPM и DIMM будет еще меньше.

В Memory Mode модули памяти DCPM не сохраняют данные при перезагрузке или потере питания. Это сделано специально, поскольку информация, находящаяся в области кэш-памяти (в обычных модулях DIMM), в этих случаях теряется по определению и целостность данных не может быть обеспечена.

App Direct Mode

В отличие от Memory Mode в режиме App Direct Persistent Memory выступает как энергонезависимое устройство хранения прямого доступа, подключенное непосредственно к шине памяти.

Требования к расположению модулей DIMM и DCPM такие же, как и в случае Memory Mode, за одним исключением: когда в сервере присутствует только один модуль Persistent Memory, модули DIMM должны устанавливаться в оба контроллера памяти процессора, то есть их должно быть как минимум две штуки.

В App Direct Mode приложения могут записывать и читать данные напрямую из области Persistent Memory подобно тому, как они это делают, используя оперативную память (с тем важным отличием, что эта память энергонезависимая). Поддерживаются побайтная адресация, режимы DMA и RDMA (прямой доступ к памяти), для операций чтения задействуется кэш-память процессора. DCPM в этом режиме лишь немого уступает в производительности оперативной памяти DDR4: величина задержки составляет примерно 200 наносекунд для операций чтения и 300 наносекунд для записи против 75 наносекунд для оперативной памяти DRAM, а пропускная способность при использовании 6 модулей DCPM на сокет достигает 47 GB/s для чтения и 18 GB/s для записи против примерно 100 GB/s для оперативной памяти.

Режим App Direct целиком раскрывает потенциал Optane Persistent Memory как устройства хранения, исключая задержки, присущие традиционным устройствам хранения и вносимые протоколом PCIe и операционной и файловой системами. App Direct позволяет приложениям взаимодействовать с памятью Persistent Memory на более высоком уровне пропускной способности и со значительно меньшими задержками по сравнению с самыми производительными твердотельными накопителями корпоративного уровня. Режим App Direct также позволяет данным приложений оставаться доступными даже после перезагрузки или перебоев в питании.

Для использования DCPM в режиме App Direct производители приложений должны их модифицировать при помощи набора библиотек Intel Persistent Memory Development Kit (PMDK). Поддержка Persistent Memory уже реализована в таких приложениях, как MS SQL Server 2019, VMware и некоторых других.

Если приложение не модифицировано для поддержки режима App Direct, оно может использовать Persistent Memory как обычный накопитель в режиме Storage over App Direct, который поддерживается на уровне операционной системы (например, такая поддержка есть в Windows Server 2019). В этом случае взаимодействие c Persistent Memory осуществляется не напрямую из приложения, а через драйвер операционной системы, который обеспечивает блочный или файловый (вместе с файловой системой ОС) доступ к области Persistent Memory. Производительность в этом режиме заметно ниже, чем в «чистом» App Direct Mode, поскольку добавляются задержки со стороны ПО.

Storage over App Direct Mode

В этом режиме модуль DCPM «виден» в операционной системе как обычный физический накопитель, к которому возможен блочный или файловый доступ, осуществляемый средствами ОС.

Каждый модуль DCPM может использоваться как отдельный накопитель. Кроме того, модули, подключенные к одному процессору, на уровне BIOS сервера можно объединить в единый накопитель с чередованием подобно RAID0. Модули, подключенные к разным процессорам, объединить можно только программно.

В App Direct модули DCPM можно тестировать как обычные накопители. Сначала мы протестировали 4 модуля в режиме JBOD на операциях случайного чтения и записи, чтобы посмотреть, как масштабируется производительность и какова ее зависимость от количества одновременных запросов. Здесь важно отметить, что для модулей DCPM, в отличие от обычных накопителей, производительность не зависит от глубины очереди приложения, а реагирует только на число одновременных потоков нагрузки.

Скорость чтения со случайным доступом
Диаграмма 3. Скорость случайного чтения (операций в секунду) для модулей DCPM в режиме Storage over App Direct в зависимости от числа потоков нагрузки и количества модулей в системе

 

Скорость записи со случайным доступом
Диаграмма 4. Скорость случайной записи (операций в секунду) для модулей DCPM в режиме Storage over App Direct Mode в зависимости от числа потоков нагрузки и количества модулей в системе

Затем мы решили сравнить, получится ли выигрыш в производительности на модулях DCPM по сравнению с обычными NVMe-накопителями в режиме RAID-массива, в качестве которых мы взяли одни из самых быстрых накопителей Intel DC P4610.

Поскольку модули Persistent Memory аппаратно можно объединить только в RAID0, нам пришлось ограничиться только этим типом RAID. Накопители NVMe объединялись в аппаратный RAID0 средствами Intel VMD. Сразу отметим, что VMD с точки зрения масштабирования производительности RAID-массива пока не впечатляет (мягко говоря).

Скорость случайного чтения
Диаграмма 5. Сравнение массивов RAID0 на базе Intel Persistent Memory (Storage over App Direct Mode) и
NVMe NAND (Intel VMD)

 

Скорость случайной записи
Диаграмма 6. Сравнение массивов RAID0 на базе Intel Persistent Memory (Storage over App Direct Mode) и
NVMe NAND (Intel VMD)

Что можно сказать о потенциале использования Intel Persistent Memory в качестве обычных накопителей? Вот некоторые соображения:

  • Очень малое время задержки (3 микросекунды на чтение и запись) по сравнению с NAND (25μs)
  • Высокая производительность на случайных операциях чтения и записи (1,7 MIOPS и 530 kIOPS для одиночного накопителя)
  • Очень высокая производительность на последовательных операциях чтения (до 20GB/s) для одиночного накопителя (запись до 2GB/s)
  • Хорошая масштабируемость производительности при увеличении количества модулей для JBOD и RAID0
  • Хорошая масштабируемость при увеличении числа потоков нагрузки
  • Не хватает поддержки RAID1, правда, вероятно есть возможность дублирования через зеркалирование памяти, но мы этот режим не тестировали
  • Нечувствительность производительности к глубине очереди, что плохо для однопоточных приложений.

Ну и просто интересно было посмотреть, как все это заработает.

 

Дмитрий Командный
02.09.2019