Введение в Storage Performance Development Kit (SPDK)

Введение

Системы хранения данных на основе твердотельных накопителей получают все более широкое распространение в центрах обработки данных. Хранилища на базе флеш-памяти текущего поколения обладают значительными преимуществами с точки зрения производительности, потребления электроэнергии и плотности данных в стойках по сравнению с дисковыми накопителями. Эти преимущества станут еще более ощутимыми при появлении на рынке накопителей нового поколения.

Introduction to the Storage Performance Development Kit (SPDK)Клиентам, внедряющим твердотельные накопители текущего поколения, такие как Intel® P3700 NVMe*, приходится справляться со сложной проблемой: поскольку пропускная способность гораздо выше, чем у дисковых накопителей, а задержки гораздо ниже, большая часть общего времени транзакций теперь приходится на работу программного обеспечения хранилища. Другими словами, производительность и эффективность всей системы хранения данных все сильнее зависит от производительности и эффективности используемого программного набора. При этом носители данных постоянно совершенствуются, в ближайшие годы их мощность превзойдет возможности программных архитектур, используемых в системах хранения данных.

Для помощи ОЕМ-производителям и поставщикам программного обеспечения в интеграции такого оборудования корпорация Intel создала набор драйверов и разработала полную архитектуру хранилища. Эта инициатива получила название Storage Performance Development Kit (SPDK). Цель SPDK — подчеркнуть высокую эффективность и производительность, достигаемую совокупностью технологий Intel в области сетей, вычислений и хранения данных. С помощью SPDK удалось продемонстрировать, что можно достичь великолепных показателей в миллионы операций ввода-вывода в секунду, используя несколько процессорных ядер и несколько накопителей NVMe без какого-либо дополнительного оборудования для разгрузки. Intel бесплатно предоставляет полный исходный код эталонной архитектуры Linux* (по лицензии Intel). Драйвер пользовательского режима NVMe предоставлен в виде открытого исходного кода сообществу на портале 01.org, а код других элементов пакета будет представлен в течение 2016 года.

Обзор программной архитектуры

Как работает SPDK? Исключительно высокая производительность достигается за счет применения двух основных методик: работа на пользовательском уровне и в опрашиваемом режиме. Давайте подробнее рассмотрим два этих программных принципа.

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

Во-вторых, драйверы опрашиваемого режима (PMD) постоянно ожидают работы вместо того, чтобы быть отправленными на работу. Представьте такую ситуацию: вечером в пятницу в центре города вы стоите на тротуаре, пытаясь поймать такси, но автомобили один за другим проезжают мимо вас, поскольку в них уже сидят пассажиры. При этом невозможно предсказать, сколько времени вам придется ждать у дороги, прежде чем найдется свободное такси. Именно такие затруднения могут ожидать пакет или блок данных при попытке «поймать тачку» в традиционном драйвере ввода-вывода хранилища данных с распределением нагрузки на основе прерываний. С другой стороны, представьте процесс посадки в такси в хорошем аэропорту. Водители такси уже на месте и ожидают подходящих по очереди пассажиров; при появлении пассажира они уже через несколько секунд подают машину и доставляют пассажиров и багаж по нужным адресам. Именно так работают драйверы опрашиваемого режима (PMD), и так устроены все компоненты SPDK. Пакеты и блоки распределяются мгновенно, время ожидания сводится к минимуму, благодаря чему снижаются задержки, повышается пропускная способность, а время задержек стабилизируется (меньше колебаний).

SPDK состоит из множества компонентов, взаимосвязанных и использующих общие элементы пользовательского уровня и работы в опрашиваемом режиме. Каждый из этих компонентов был создан для преодоления определенного узкого места производительности, обнаруженного при создании полной архитектуры SPDK. При этом все разработанные компоненты можно интегрировать и в другие архитектуры, отличные от SPDK, что дает клиентам возможность задействовать технологии, применяемые в SPDK, для ускорения работы собственного программного обеспечения. Например, была создана библиотека сетевых служб пользовательского пространства (UNS) для преодоления ограничений производительности набора TCP/IP ядра Linux. За счет создания работающей в пользовательском режиме опрашиваемой реализации TCP/IP в SPDK удалось добиться гораздо более высоких показателей IOPS, затрачивая намного меньше процессорных циклов на сортировку и обработку TCP/IP-пакетов.

Решение состоит из трех категорий компонентов: внешний сетевой интерфейс, вычислительная платформа и внутренние системы.

Внешний интерфейс состоит из драйвера сетевого адаптера Data Plane Development Kit (DPDK) и сетевых служб пользовательского пространства (UNS). DPDK образует платформу для высокоскоростной обработки пакетов на уровне сетевого адаптера, что позволяет данным быстрее попадать из сетевого адаптера в пользовательское пространство. После этого за работу принимается код UNS: он распаковывает TCP/IP-пакеты и формирует команды iSCSI.

После этого вычислительная платформа получает содержимое пакетов и преобразует команды iSCSI в команды SCSI блочного уровня. Перед отправкой этих команд внутренним драйверам в SPDK существует платформа API для добавления индивидуальных функций, необходимых клиентам, в рамках платформы SPDK (зеленый прямоугольник на показанном выше рисунке). Примеры таких функций: кэширование, дедупликация и сжатие данных, шифрование, вычисления для RAID и распределенного хранения. Образцы таких функций входят в состав SPDK, хотя их не следует принимать за реализации, готовые к использованию в рабочей среде: они служат лишь для моделирования реальных сценариев использования.

Наконец, данные попадают к драйверам бэк-энда, которые занимаются взаимодействием с физическими устройствами, то есть осуществляют операции чтения и записи. SPDK включает PMD пользовательского уровня для различных носителей хранения данных: устройства NVMe; универсальные устройства под управлением Linux с традиционными дисковыми накопителями; драйверы памяти для решений с блочной адресацией памяти (например, RAMDISKS), а также устройства, способные использовать технологию Intel® I/O Acceleration Technology (Crystal Beach DMA). Пакет бэк-энд драйверов позволяет расширить спектр используемых высокопроизводительных устройств хранения данных, что повышает универсальность всей системы.

SPDK совместим не со всеми архитектурами систем хранения данных. Вот несколько вопросов, с помощью которых пользователи смогут определить, подходят ли компоненты SPDK к их архитектуре.

Система хранения данных работает на основе Linux?
        В настоящее время пакет SPDK протестирован и поддерживается только на Linux.

Производительность системы хранения данных сохраняется в пользовательском режиме?
        В SPDK удалось добиться повышения производительности и эффективности за счет перераспределения производительности с сетевого адаптера на диск исключительно в пользовательском режиме.

Допускает ли архитектура системы внедрение драйверов PMD без блокировки в поточную модель?
        Поскольку драйверы PMD постоянно работают в собственных потоках (вместо перехода в режим сна и высвобождения процессора при бездействии), у них строгие требования к поточной модели.

Использует ли система Data Plane Development Kit (DPDK) для работы с нагрузками, состоящими из сетевых пакетов
        DPDK содержит платформу для SPDK, поэтому клиенты, использующие DPDK в настоящее время, смогут воспользоваться интеграцией с SPDK.

Допускает ли ваша модель лицензирования использование нераспространяемого исходного кода?
        Некоторые части SPDK доступны в виде компонентов с открытым исходным кодом с лицензиями BSD (например, NVMe и драйверы пользовательского пространства CBDMA). Другие фрагменты в данное время лицензируются по лицензии Intel (UNS и iSCSI Target пользовательского пространства), хотя это, конечно же, может измениться. Весь исходный код SPDK предоставляется бесплатно.

Обладает ли команда разработчиков нужными знаниями, чтобы самостоятельно изучать и устранять неполадки?
        Корпорация Intel не принимает на себя никаких обязательств по поддержке этого программного решения. И корпорация Intel, и сообщество разработчиков программ с открытым исходным кодом, работающие с SPDK, будут предпринимать коммерчески обоснованные действия для изучения возможных ошибок неизмененных выпущенных программ, но корпорация Intel ни при каких обстоятельствах не будет принимать обязательств перед клиентами в отношении какого-либо обслуживания или поддержки этого программного решения.

Возможности и преимущества технологий Intel зависят от конфигурации системы. Может потребоваться определенное оборудование, программное обеспечение или активация служб. Производительность может различаться в зависимости от конфигурации системы. Обратитесь к изготовителю системы или в розничный магазин, где вы ее приобрели, или на сайт intel.com.

Программное обеспечение и нагрузки, использованные в тестах производительности, могли быть оптимизированы для достижения высокой производительности на микропроцессорах Intel. Тесты производительности, такие как SYSmark* и MobileMark*, проводятся на определенных компьютерных системах, компонентах, программах, операциях и функциях. Любые изменения любого из этих элементов могут привести к изменению результатов. При выборе приобретаемых продуктов следует обращаться к другой информации и тестам производительности, в том числе к тестам производительности определенного продукта в сочетании с другими продуктами.

Конфигурация, использованная для измерения производительности

  • 2S Xeon® E5-2699v3: 18 ядер, 2,3 ГГц (гиперпоточность выключена)
    • Примечание: при измерении производительности использовалось одно процессорное гнездо.
  • 32 ГБ ОЗУ, DDR4, 2133 млн передач в секунду
    • 4 канала памяти на каждый ЦП
      • 1x 4 ГБ 2R DIMM на канал
  • Ubuntu (Linux) Server 14.10
  • Ядро 3.16.0-30-generic
  • Ethernet-контроллер XL710, 40 Гбит/с
  • 8 устройств P3700 NVMe для хранения данных
  • Конфигурация NVMe
    • Всего 8 NVMe PCIe 3-го поколения, по 4
      • 4 NVMe подключены к 1-му разъему x16
        (разветвление на 4 x4 в BIOS)
      • 4 NVMe подключены ко 2-му разъему x16 (разветвление на 4 x4 в BIOS)
    • Intel SSD DC P3700, 800 ГБ
    • Микропрограмма: 8DV10102
  • Конфигурация теста FIO BenchMark
    • Direct: Да
    • Глубина очереди
    • 4KB Random I/O: 32 outstanding I/O
    • 64KB Seq. I/O: 8 outstanding I/O
    • Время подготовки: 30 секунд
    • Время выполнения: 180 секунд
    • Norandommap: 1
    • I/O Engine: Libaio
    • Numjobs: 1
  • Конфигурация BIOS
    • Speed Step: отключено
    • Turbo Boost: отключено
    • Политика оптимизации экономичности и производительности ЦП: производительность

Дополнительные сведения см. на сайте http://www.intel.com/performance.

Данный документ не предоставляет явной или подразумеваемой лицензии, лишения права возражения или иных прав на интеллектуальную собственность.

Корпорация Intel не предоставляет никаких гарантий (явных и подразумеваемых), включая подразумеваемые гарантии коммерческой ценности, пригодности для какой-либо цели или ненарушения каких-либо прав, а также любых гарантий, связанных с работой программ, их распространением или их использованием в торговле.

Этот документ содержит информацию о продуктах, службах и процессах, находящихся на этапе разработки. Вся информация, представленная в данном документе, может быть изменена без предварительного уведомления. Для получения последних прогнозов, графиков, технических характеристик и планов развития обратитесь к своему представителю корпорации Intel.

Продукты и услуги, описанные в данном документе, могут содержать ошибки и неточности, из-за чего реальные характеристики продуктов могут отличаться от приведенных здесь. Уже выявленные ошибки могут быть предоставлены по запросу.

Копии документов с порядковым номером, ссылки на которые приведены в этом документе или в другой документации Intel, можно получить, обратившись по телефону 1-800-548-47-25 или на сайте www.intel.com/design/literature.htm.

Intel, эмблема Intel и Xeon являются товарными знаками корпорации Intel в США и других странах.

*Прочие наименования и товарные знаки могут быть собственностью третьих лиц.

© Intel Corporation, 2015 г.

Для получения подробной информации о возможностях оптимизации компилятора обратитесь к нашему Уведомлению об оптимизации.
ВложениеРазмер
Иконка изображения pic2_0.png38.53 КБ
Возможность комментирования русскоязычного контента была отключена. Узнать подробнее.