Что такое NVMe?
Напомним, что NVMe — это протокол, а не само устройство. Наверняка же вы видели в магазинах обозначение «NVMe SSD», но такое определение неверное само по себе. По-хорошему, накопители имеют формат подключения M.2, а для передачи данных потребляют линии PCI-E 3.0/4.0, которые ранее безраздельно использовались видеокартами под свои нужды. С другой стороны, жесткое следование стандартам скорее запутает большинство читателей, поэтому остановимся на NVMe (и протокол, и форм-фактор, и название накопителя).
Ключевые преимущества NVMe над конкурентами
Начать стоит с того, что NVMe построена на использовании линий PCIe, что, в теории, дает неограниченный максимальный предел скоростных характеристик накопителей. Зачем это надо? Как минимум, затем, что текущие SATA давно уперлись в свои пределы, а разработка полностью новой шины займет гораздо больше времени и средств.
И это лишь вершина айсберга, а мы предлагаем копнуть гораздо глубже.
Увеличение количества и глубины очередей
На момент становления NVMe как технологии, инженеры пытались взять за основу линии PCIe, но для передачи информации эмулировали работу привычного протокола AHCI, известного по SATA-устройствам.
В итоге, работа застопорилась по причине того, что AHCI поддерживал очередь на 32 команды. Жестким дискам этого хватало с головой из-за медлительности механических комплектующих, но NVMe работают в сотни раз быстрее, поэтому для них такой подход стал гигантским бутылочным горлышком. Потому в спецификации нового стандарта заложили уже 65535 очередей и столько же команд с указанием приоритетности. Цифры, откровенно говоря, бессмысленные сегодня, но приятно, что инженеры думали о будущем.
Работа с многопроцессорными системами и механизм прерываний
Продолжаем держать в уме 65535 команд и очередей. Такой подход позволяет иначе взглянуть на параллелизм в работе, что существенно увеличит скорость обработки огромных массивов информации:
- каждое ядро серверного процессора может управлять несколькими очередями накопителя;
- управление прерываниями MSI-X позволяет «на лету» менять приоритет задачи, если возникшее вычисление оказалось важнее типичных задач по копированию;
- внедрение технологии виртуализации.
Собственно, говоря, для серверов виртуализации NVMe-протокол изначально и разрабатывали. Серверные системы отчаянно нуждались в сверхбыстрых накопителях с возможностью параллельной обработки сотен, а то и тысяч задач.
Если описывать этот процесс образно, то представьте себе дорогу на 2 полосы (AHCI). Машины снуют туда-сюда, периодически стоят в пробке, и никому нет дела, кто находится в потоке: скорая, пожарная, полиция, правительственный кортеж с президентом на борту. Хочешь проехать — жди очереди.
А теперь взглянем на NVMe. Вместо 2 полос уже 16, всем хватает места, магистраль вмещает гигантское количество трафика. Но если вдруг скорой понадобилось быстро проехать — все расступаются (полоса освобождается благодаря технологиям прерывания и приоритизации данных).
Сокращение задержек
Еще одной важной составляющей NVMe стала реализация кратчайшего пути при выполнении команд. А для этого потребовалось исключить все возможные контроллеры-посредники, разработав эффективный набор команд. Цель — снизить процессорное время на обработку сигнала, повысить стабильность передачи пакетов и увеличить итоговую скорость работы сервера.
Вот так выглядит типичное количество «ступеней» для AHCI и NVMe:
Звеньев в цепочке «процессор — накопитель» подозрительно много, как посредников между клиентом и продавцом, где каждый стремиться затормозить процесс (задержки). В NVMe-протоколе SATA-контроллер удалили как архаизм, что сильно повысило производительность. Также на общую скорость существенно повлияли твердотельные микросхемы NAND. Другое дело, что именно они теперь напрямую влияют на латентность памяти. Но производители уже придумали ряд технологий по увеличению производительности. Взять хотя бы 3DXpoint от Intel и 3D V-NAND от Samsung.
Вернемся к аналогиям. Представьте, что для преодоления 100 метров пути по протоколу AHCI приходилось:
- кланяться всем судьям и участникам забега;
- бежать строго по определенному маршруту с длиной шага 30 см;
- дважды огибать каждый столб, встреченный по пути;
- постоянно сверять маршрут с картой и ожидать подтверждения тренера.
Смех смехом, а контроллеров, протоколов и прочих подводных камней в AHCI хватало.
С NVMe все куда проще:
- кивнул всем головой;
- побежал.
В NVMe поработали над задержками доступа к оперативно памяти серверов. Протокол использует всего один запрос на чтение, что делает эффективнее работу с операциями ввода/вывода малых объемов данных. AHCI требовалось 2 запроса.
Также не забывайте, что контроллер в NVMe SSD-накопителях поддерживает параллелизм и несколько каналов для подключения нескольких микросхем памяти. А умение грамотно загрузить сразу несколько NAND-ячеек на 100% ценится гораздо выше, чем выжимание всех соков из одной, пока остальные простаивают.
Достаточно вспомнить современную гонку ядер серверных процессоров, в которой AMD удалось знатно обставить конкурента. Параллельность — наше все.
Так почему за NVMe будущее?
Если оперировать всеми значениями, сказанными выше, то мы получаем:
- увеличение производительности за транзакцию (IOPS) при минимизации времени отклика накопителя;
- снижение на время обработки больших объемов данных, поскольку они размещены статично и могут просчитываться в несколько потоков благодаря контроллеру;
- увеличение плотности размещения виртуальных машин, поскольку NVMe по физическим габаритам раз в 5-6 меньше SSD форм-фактора 2.5” при аналогичном объеме памяти;
- увеличение плотности хранения информации.
Теперь вспоминаем возможности протоколов SATA III и их пропускную способность — всего 6 Гбит/с, и это примерные цифры. На практике получается не более 550-600 МБ/с.
NVMe работает по протоколу PCI-E, что обеспечивает более интересные цифры:
- PCI-E 3.0 — 0.98 ГБ/с;
- PCI-E 4.0 — 1.96 ГБ/с;
- PCI-E 5.0 — 3.9 ГБ/с.
И это на одну линию. Добавьте множитель х2, или х4, чтобы получить более впечатляющие показатели.
Но сырая скорость — не главный критерий NVMe. В серверах куда важнее ценится показатель числа операции ввода-вывода (IOPS). Именно он определяет нагрузку на подсистему памяти. И снова сухие цифры:
- AHCI — 200-250 IOPS для SATA 7200 об/мин, до 300 IOPS для SAS 15 000 об/мин;
- NVMe — более 1 млн IOPS для PCI-E 4.0 x4 (произвольные чтение/запись блоков 4 КБ).
Не знаешь, как описать технологию словами — оперируй цифрами. Всегда работает.
И еще отметим, что NVMe-накопители все-таки твердотельные. В них отсутствуют механические и подвижные элементы. Единственная жужжащая деталь, которая им требуется — вентилятор системы охлаждения, если устройство работает на пределе возможностей, нещадно нагревая контроллер. Но от этого уже никуда не денешься.
Устройство нового формата уже изменили принцип построения инфраструктуры ЦОД, освобождая столько много драгоценного пространства для установки новых стоек. Как ни странно, а фраза «Быстрее, выше, сильнее» практически идеально подходит для NVMe-технологии.
Накопители уже обошли конкурентов по скорости, компактности и отказоустойчивости. Осталось лишь решить вопрос стоимости и масштабирования. Но с первым активно помогают крупнейшие вендоры, а со вторым — ведущие чипмейкеры вроде Samsung, Intel и Hynix. Будущее обещает быть крайне быстрым.
Если у вас остались вопросы о возможностях накопителей на базе NVMe, особенностях технологии или выборе комплектующих для своей платформы, задайте их нам. Специалисты Марвел.Маркет представят развёрнуую консультацию по всем компонентам серверного оборудования и помогут определиться с выбором.