NVMe SSD и потоковые приложения

16 июль, 2015 - 13:11Игорь Дражан

У NVMe SSD есть хорошие перспективы в обработке больших данных, хостинге виртуальных машин, распространении видеоконтента – приложениях, требовательных к высокой потоковой скорости обменов с устройствами хранения.

Прок от протокола NVMe в задачах произвольного доступа к устройствам хранения мы оценили в статье «NVMe SSD. "Случайное" знакомство». Низкая латентность NVMe SSD несомненно проявит себя в транзакционных приложениях, работающих с короткими, произвольно адресуемыми выборками (как в базах данных).

Это не всё. Сравнение характеристик NVMe SSD и SATA SSD показывает, что выгоду можно искать в задачах потокового чтения/записи:

NVMe SSD и потоковые приложения

Источник: ark.intel

Пятикратное превосходство в ширине транспортного коридора еще не обещает немедленных эффектов в реальных приложениях, но к некоторым из них заставляет присмотреться. Как правило, потоковые приложения – спутник больших объемов хранения. Если транзакционные базы данных относительно невелики, и занимаемые ими десятки-сотни гигабайт можно обслуживать с помощью одних только SSD (all-SSD-systems), то под видеоархивы никаких SSD не напасешься – удельная цена хранения на них пока что вдесятеро выше, чем на HDD, да и емкость устройств маловата. Тем не менее, SSD предсказуемо появляются там, где логическое управление хранением данных исходит из их неравноценности, а сами системы хранения многослойны (Прикладная термодинамика систем хранения данных). В каких приложениях ожидается массовый приход SSD?

Программно-определяемые системы

SSD используются как кеширующий слой в системах хранения и в узлах распределенной программно-управляемой инфраструктуры («Мягкое» и «твердое» в хранении данных). Сопутствующие сервисные функции – резервное копирование или обновление кеша, отчасти репликация данных и моментальные снимки – имеют дело в том числе с потоковыми операциями. Чем выше скорость их выполнения – тем меньше падение производительности для основных операций, и выше качество сервиса.

Виртуализация и облачные вычисления

Абстрагирование аппаратных ресурсов от программных выявляет, в числе прочего, несоответствие традиционных систем хранения на HDD запросам приложений. Виртуальные машины (ВМ) создают, хранят и обращаются к данным виртуализированных ресурсов хранения. При любой природе данных на физических устройствах, с ростом количества одновременных обращений ВМ возникает эффект «блендера I/O»: все типы дисковых операций «перемалываются» в нагрузку рандомного типа – с которой HDD справляются плохо. Решать проблему задержек обращения с помощью избытка HDD и изощренного кеширования – дорого, громоздко, неуклюже. Администраторы виртуализированных систем хранения приходят к разделению обращений к данным по типам операций и вводят SSD в структуру хранения. В части приложений – для обслуживания интенсивной записи произвольного доступа, в части – для ускорения чтения.

Аналитика

Польза от SSD в прочесывании больших данных и оперативном анализе систем принятия решений OLAP – не так от их низкой латентности, сколько от запаса линейной скорости вычитывания данных из хранилищ. Сам процесс формирования OLAP-кубов из OLTP-систем порождает большой объем практически линейной записи (и чем она оперативнее – тем меньше время проседания производительности транзакционной-системы). Но еще чувствительнее OLAP-системы к скорости чтения. Сложные методики расчетов и анализа данных бизнес-пользователями, а в особенности построение нетиповых отчетов, приводят к смеси потокового чтения из большого количества различных таблиц, где, по идее, и должны проявиться сильные стороны NVMe SSD: низкие задержки в сочетании с высокими показателями в линейных операциях.

Распространение контента

Сети доставки (дистрибуции) контента CDN позволяют интернет-пользователям ускорять загрузку цифрового контента (видео, музыки, игр, программ). В географически распределенной сетевой инфраструктуре данные центральных хранилищ реплицируются на периферийные платформы в точках присутствия поближе к пользователю – чтобы контент доставался ему по кратчайшему сетевому маршруту. Кеширование в CDN оптимизирует использование дискового пространства и снижает нагрузку на каналы связи. Чтобы на удалённых серверах хранился только востребованный контент, они должны:

  1. быстро его подтягивать с центральных серверов;
  2. выдерживать пиковые многопользовательские нагрузки (пандемии популярных сетевых видеороликов или интернет-трансляции спортивных состязаний);
  3. своевременно замещать «остывающие» данные свежими, «горячими».

Посмотрим на особенности поведения NVMe SSD под нагрузкой, отвечающей задачам хранения и обработки видеоданных, а также многопоточной трансляции мультимедиа-контента.

Постановка тестов

Как и в первой части, для сравнения мы взяли два SSD производства Intel с различными интерфейсами – SATA и NVMe: 400GB серии S3700 и 400GB серии P3600, сопоставимые по цене. Cтенд остался прежним:

NVMe SSD и потоковые приложения

Для создания нагрузки и измерения производительности использовалось ПО IOMeter (v.2008.06.18-RC2), ATTO, PassMark. В этом же порядке приведем результаты тестов.

Тест IOMeter

Программное обеспечение по работе с видеоданными обычно работает блоками данных от 64КВ до 16МВ. Наиболее показательны значения 512КВ (как при передаче небольших массивов данных) и 8МБ (для больших видеофрагментов). При этом очередь к устройству (Q) обычно составляет 1-2 (что вполне логично для фактически последовательных обращений). IOmeter показал следующие результаты для NVMe SSD Intel P3600 и SATA SSD Intel S3700:

NVMe SSD и потоковые приложения

Рис.1

NVMe SSD и потоковые приложения

Рис.2

По скорости потоковой записи SATA SSD и NVMe SSD близки и на блоках 512КВ, и на блоках 8МВ. А вот в задачах чтения четко видно превосходство NVMe SSD Intel P3600: почти в три раза для блоков 512КВ и чуть более чем в четыре раза на блоках 8МВ.

Отметим абсолютные значения скорости передачи данных. NVMe SSD Intel P3600 на чтение для блока 512KВ выдает 1,05GBps, а для блока 8МВ – 1,98GBps. По сути – это очень большие цифры. К примеру, производительность на чтение NVMe Intel P3600 блоками по 8МВ находится на уровне предельной пропускной способности одновременно 2-х(!) сетевых карт 10Gb Ethernet. Или другой пример: кодек H.264 с разрешением 1920x1080 требует потока 1,5-4MBps, а значит всего один Intel P3600 может обеспечить порядка 250-600 уникальных и независимых потоков трансляции FullHD одновременно.

Латентность при обращении к дискам:

NVMe SSD и потоковые приложения

Рис.3

NVMe SSD и потоковые приложения

Рис.4

Латентность для работы с потоковыми данными не столь критична, как при работе с базами данных. Тем не менее, для задач многопоточной раздачи контента это интересная характеристика, т.к. более низкая латентность диска означает меньшие потребности в RAM для кеширования.

Латентность на запись у SATA SSD Intel S3700 и NVMe SSD Intel P3600 отличается почти в два раза и для блоков в 512КВ, и для блоков 8МВ в пользу NVMe. А вот в чтении латентность NVMe SSD Intel P3600 ниже, чем у SATA SSD Intel S3700 – в 3,5 раза. Латентность у обоих SSD от размера блока не зависит.

Тест ATTO

ATTO Disk Benchmark – классический измеритель в среде работы с потоковыми данными, в диапазоне длин блоков данных от 512КВ до 8МВ, в нашем случае с очередью Q=2. Несмотря на критику многих тестовых лабораторий, этот тест по прежнему ценится как индикатор производительности оборудования, предназначенного для обработки видеоданных.

NVMe SSD и потоковые приложения

Рис.5

NVMe SSD и потоковые приложения

Рис.6

Картинка повторяет данные IOMeter. В режиме записи практически равная производительность, с небольшим преимуществом SATA SSD Intel S3700 на малых блоках и небольшим преимуществом NVMe SSD Intel P3600 на больших блоках. При этом скорость чтения с NVMe SSD Intel P3600 в три раза выше, чем с SATA SSD Intel S3700 на малых блоках, и в четыре раза выше на больших блоках.

Тест PassMark Disk

Этот тест позволяет оценить, насколько стабильны потоковые запись и чтение с устройства. Наиболее важным этот параметр является именно для процесса трансляции видео, особенно в режиме on-line в «эфир». В тесте файл в 2GB пишется/читается непрерывно блоками по 8МВ.

Intel S3700 (запись – 443MBps, чтение – 464MBps):

NVMe SSD и потоковые приложения

Рис.7

NVMe SSD и потоковые приложения

Рис.8

Intel P3600 (запись – 476MBps, чтение – 2050MBps):

NVMe SSD и потоковые приложения

Рис.9

NVMe SSD и потоковые приложения

Рис.10

На графиках заметно, что SATA SSD Intel S3700 обеспечивает более стабильные чтение, без глубоких провалов, но с несколько большим, чем у NVMe SSD Intel P3600 средним отклонением.

Относительно же записи у обоих SSD наблюдаем стабильную работу, с близкими результатами, без существенных провалов.

Кому это (возможно) нужно

Стабильность потока записи на носители (минимум провалов) и высокая производительность в потоковых операциях исключительно важны в производстве кинофильмов, телепрограмм и сериалов. Еще более они важны в эфирных системах трансляции.

Но, к сожалению, объемы обрабатываемых материалов в высоком разрешении 2К/4К слишком велики, чтобы держать их на SSD. Жесткие диски HDD обеспечивают в разы лучшее соотношение цена/емкость, а их производительность в RAID 5 или RAID 6 вполне достаточна для подавляющего большинства задач постпроизводства. Еще более важным параметром является необходимость обеспечения коллективной работы. Студийная обработка видеоматериалов подразумевает коллективный доступ к контенту, и ограничителем производительности скорее станет сетевой интерфейс СХД.

Тем не менее, NVMe SSD большой емкости могут найти себе место в специализированных приложениях – например, в рабочих станциях цветокоррекции полнометражных фильмов.

Раздача видео, как правило, ведется одновременно большому количеству пользователей, небольшими пакетами. Буферизация популярного контента в RAM на стороне транслятора и способность принимающих персональных устройств выполнять упреждающую загрузку в память существенно нивелируют требования к задержкам доступа к данным на исходных носителях – основному козырю NVMe SSD. Трансляции телеканалов в режиме мультикаста дисковую подсистему практически не загружают.

Резоном для использования NVMe SSD для трансляции медиа-контента может быть скорость потокового чтения с устройства хранения. Тесты показывают отрыв NVMe SSD Intel P3600 относительно SATA SSD Intel S3700 в 3-4 раза. Но те же трансляторы понимают: сопоставимую с NVMe SSD скорость потока на чтение дадут несколько SSD бытового уровня, собранные в RAID 5/6. Разумеется, надежность NVMe SSD намного выше, а ресурс перезаписи несравнимо выше. Провайдерам решать самим, что им ближе: регулярно менять изнашивающиеся SATA SSD или поставить NVMe SSD Intel P3500-3600.

Итоговое общее впечатление

NVMe SSD – несомненно, шаг на следующий уровень в обустройстве подсистем ввода/вывода. От проприетарных PCIe SSD они отличаются в разы меньшей ценой при сопоставимой производительности. От SATA SSD – в разы лучшими показателями производительности по целому ряду параметров. В задачах последовательного чтения один NVMe SSD может вполне заменить 4-6 SATA SSD.

Рекордно низкие задержки, высокие показатели чтения/записи с произвольным (в IOPS) и последовательным (в MBps) доступом выдвигают NVMe SSD в несомненные лидеры среди систем хранения для корпоративных приложений. До вершины пирамиды хранения, оперативной памяти, им осталось совсем недалеко.