14 мар. 2014 г.

NVMe

NVMe (NVM Express) — спецификация нового интерфейса, предназначенного для подключения SSD непосредственно к PCI Express. Форм-фактор NGFF и другие аспекты использования NVMe в настольных системах рассматриваться не будут, нам интересно исключительно серверное применение.

Что такое NVMe?

NVMe — новый масштабируемый интерфейс, предназначенный для замены SATA и SAS для работы с SSD: другой набор команд, физические интерфейсы с обратной совместимостью, оптимизация работы с очередями.
В списке разработчиков находятся крупные компании: Intel, Micron, LSI, Marvell, Cisco, EMC, Dell, Oracle, NetApp, sTec, Samsung, SanDisk, PMC Sierra.

Зачем нужен NVMe?

Зачем нужен отказ от стабильного и развивающегося SAS? Появился 12-гигабитный SAS3, есть соответствующие SSD, контроллеры, экспандеры, кабели. Неужели этого мало?
Стоит вспомнить основное предназначение энергонезависимых носителей в транзакционных задачах: максимально быстро переместить большое количество блоков с данными в оперативную память и обратно. То есть идет постоянная борьба за рост IOPS и минимизацию задержек. Ради этого происходит регулярное сокращение лишних звеньев: контроллер памяти переместился на один кристалл с процессором, следом переместился контроллер шины PCI-E.

PCI-E и SSD

Дело осталось за малым — передвинуть ближе к процессору данные из постоянной памяти, т.е. из SSD (с медленными традиционными HDD снижение накладных расходов интерфейса не имеет смысла). Действительно, зачем подключать к NAND сложный контроллер, который будет заниматься обслуживанием многослойного стека SAS и прочими вещами, такими как эмуляция 512-байтных секторов, а затем передавать его не менее сложному контроллеру на хосте?
Подобная оптимизация уже существует. Это многочисленные на сегодняшний день PCI-E SSD.
Множество форм-факторов, типов NAND (MLC, eMLC, SLC), архитектурных особенностей. В самых примитивных вариантах даже преимуществ никаких: обычный контроллер, к которому по SATA подключены несколько SSD, просто распаяно все на одной плате. Более совершенные PCI-E SSD используют специализированные контроллеры с быстрыми интерфейсами доступа к NAND. Ограничения форм-фактора 2.5" отсутствуют и можно разместить более производительный контроллер и даже оптимизировать работу с NAND со стороны хоста (например, ioMemory в Fusion-io). Результатом является минимальная задержка всего в несколько десятков микросекунд, что недостижимо для связки SAS HBA + SAS/SATA SSD.
PCI-E SSD неудобны своим форм-фактором: замена такой платы требует остановки сервера и вскрытия корпуса, платы требуют крайне аккуратного обращения по сравнению с защищенными металлическим кожухом 2.5" SSD.

Разъем

Удобным было бы гибридное решение: SSD в привычном форм-факторе 2.5" и возможностью горячей замены, но с новым интерфейсом (и желательно, обратной совместимостью).
Подобный форм-фактор был разработан — SFF-8639.
К привычным двум линкам SAS добавлены четыре линка PCI-E, т.е. бэкплейн с разъемами SFF-8639 остаются обратно совместимыми и допускают подключение обычных SAS и SATA дисков.

Преимущества


  • Пропускная способность. Для PCI-E 3.0 получается порядка 1ГиБ на линию.
  • Снижение задержек. Полученный на сегодняшний день показатель — 3 микросекунды.
  • Оптимизация под архитектурные особенности SSD. Доступ к NAND выгодно осуществлять параллельно, с большим количеством потоков. NVMe поддерживает до 64k потоков с глубиной очереди до 64k в каждом.
  • Оптимизация работы с прерываниями. Работать с NVMe устройством можно через большее количество процессорных ядер.
  • Упрощенный набор команд. Из-за отсутствия необходимости обеспечивать совместимость со SCSI удалось сократить набор команд до 13-ти, без учета сервисных команд и управления резервированием.
  • Унификация драйверов. Вместо большого количества несовместимых между собой устройств, требующих собственных драйверов, а иногда и дополнительного ПО, мы получаем взаимозаменяемость и отсутствие возможных конфликтов между устройствами разных производителей.

Когда?

Драйверы под Windows, Linux, FreeBSD, Solaris, ESXi, UEFI уже давно существуют и совершенствуются.
Представить, как все это будет выглядеть в железном воплощении можно уже сейчас, но формально это еще не NVMe: сервер Dell R820 и SSD Micron P320h 2.5" (обзор от StorageReview):

Существует прототип от IDT в FHHL, low-profile и 2.5" форм-факторах:
Прототип 2.5" SSD NVMe — Samsung XS1715:
Обещают емкости в 400, 800 и 1600ГБ и до 740000 IOPS. Нет оснований полагать, что у остальных ведущих игроков на рынке нет аналогичных прототипов.

Одна из новых плат Supermicro для платформы Intel Grantley (это 2-процессорные системы под процессоры Haswell-EP, они же Xeon E5-2600 v3) будет иметь поддержку 2.5" NVMe: