Для клиентов, использующих твердотельные накопители текущего поколения, такие как Серия Intel DC NVMe P3700 , приходится решать сложную проблему: поскольку пропускная способность намного выше, чем у дисковых накопителей, а задержка намного ниже, большая часть общего времени транзакций теперь тратится на работу программного обеспечения хранилища.
Другими словами, производительность и эффективность всей системы хранения данных все больше зависит от производительности и эффективности используемого программного стека.
В то же время носители информации постоянно совершенствуются; в ближайшие годы их мощность превысит возможности программных архитектур, используемых в системах хранения данных.
Чтобы помочь OEM-производителям и поставщикам программного обеспечения интегрировать такое оборудование, Intel создала набор драйверов и разработала полную архитектуру хранения данных, называемую Storage Performance Development Kit (SPDK).
Цель SPDK — подчеркнуть высокую эффективность и производительность, достигнутую благодаря сочетанию сетевых технологий, вычислительных технологий и технологий хранения данных Intel. Используя SPDK, мы смогли продемонстрировать, что можно достичь выдающейся производительности в миллионы операций ввода-вывода в секунду, используя несколько процессорных ядер и несколько дисков NVMe без какого-либо дополнительного разгрузочного оборудования.
Intel предоставляет полный исходный код эталонной архитектуры для Linux на более широких и либеральных условиях.
Лицензии BSD , он распространяется в обществе через GitHub .
По адресу spdk.io содержит блог, список рассылки и дополнительную документацию.
Обзор архитектуры программного обеспечения
Как работает СПДК? Исключительно высокая производительность достигается за счет использования двух основных приемов: запуска на уровне пользователя с использованием драйверы режима опроса (ПМД).Давайте подробнее рассмотрим эти два принципа программного обеспечения.
Во-первых, запуск кода драйвера устройства на пользовательском уровне означает, по определению, что код драйвера не запускается в ядре.
Устранение прерываний и переключений контекста ядра позволяет сэкономить значительные вычислительные ресурсы и потратить больше циклов на фактическое хранение данные.
Независимо от сложности алгоритмов хранения (дедупликация, шифрование, сжатие или простое блочное хранилище), чем меньше напрасных циклов, тем выше производительность и меньше задержка.
При этом я не говорю, что ядро добавляет ненужные накладные расходы; Точнее было бы сказать, что ядро добавляет накладные расходы, необходимые для сценариев вычислений общего назначения, которые могут быть неприменимы к выделенной системе хранения.
Фундаментальный принцип SPDK — обеспечить минимальную задержку и максимальную эффективность за счет устранения любого источника дополнительных затрат на программное обеспечение.
Во-вторых, драйверы защищенного режима меняют базовую модель ввода-вывода.
В традиционной модели ввода-вывода приложение выдает запрос на чтение или запись, а затем переходит в спящий режим и ожидает пробуждения от прерывания после завершения операции ввода-вывода.
Драйверы защищенного режима работают по-другому: приложение выдает запрос на чтение или запись, а затем переключается на другую работу, периодически проверяя, завершен ли запрос ввода-вывода.
Это устраняет задержки и накладные расходы, связанные с использованием прерываний, и повышает эффективность ввода-вывода приложений.
В эпоху вращающихся устройств хранения данных (таких как ленточные накопители и жесткие диски) накладные расходы на прерывания составляли небольшую часть общего времени ввода-вывода, но они повышали общую эффективность системы.
Сейчас, с распространением твердотельных накопителей с малой задержкой, прерывания уже занимают значительную часть общего времени ввода-вывода.
И чем меньше задержка, тем больше снижение производительности из-за прерываний.
Системы уже способны обрабатывать миллионы операций ввода-вывода в секунду, поэтому устранение этих накладных расходов для миллионов транзакций значительно сократит использование ресурсов.
Пакеты и блоки распределяются мгновенно, задержка сводится к минимуму, что приводит к более низкой задержке, более высокой пропускной способности и более стабильной задержке (меньше колебаний).
SPDK состоит из множества компонентов, которые взаимосвязаны и имеют общие элементы пользовательского уровня и режима опроса.
Каждый из этих компонентов был создан для преодоления определенного узкого места в производительности, обнаруженного во время создания полной архитектуры SPDK. При этом все разработанные компоненты могут быть интегрированы в другие архитектуры, кроме СПДК, что дает заказчикам возможность использовать технологии, используемые в СПДК, для ускорения собственного программного обеспечения.
Все эти компоненты расположены по порядку, начиная с нижнего уровня вверх.
Драйверы оборудования
Драйвер NVMe: основной компонент SPDK. Этот оптимизированный драйвер обеспечивает высокую масштабируемость, эффективность и производительность.Технология Intel OuickData: также называется технологией ускорения ввода-вывода Intel (Intel IOAT).
Это копия встроенной в платформу подсистемы разгрузки на базе процессоров Intel Xeon. Предоставляя доступ к пользовательскому пространству, порог перемещения данных DMA снижается, что позволяет более эффективно использовать небольшие операции ввода-вывода или мосты NTB.
Внутренние блочные устройства
Инициатор NVMe over Fabrics (NVMe-oF).С точки зрения программиста, локальный драйвер SPDK NVMe и инициатор NVMe-oF используют общий набор команд API. Это означает, что очень легко включить, например, локальную или удаленную репликацию.
Блочное устройство Ceph RADOS (RBD): позволяет использовать Ceph в качестве внутреннего устройства для SPDK. Благодаря этому вы можете использовать Ceph, например, как еще один уровень хранения.
Блочное устройство Blobstore: блочное устройство, выделенное пакетом SPDK Blobstore. Это виртуальное устройство, с которым могут взаимодействовать виртуальные машины или базы данных.
Эти устройства используют преимущества инфраструктуры SPDK, то есть отсутствие блокировок и высокую масштабируемость производительности.
Асинхронный ввод-вывод Linux* (AIO): позволяет SPDK взаимодействовать с устройствами ядра, такими как жесткие диски.
Услуги хранения
BDAL (уровень абстракции блочных устройств): этот общий уровень абстракции блочных устройств является связующим звеном, которое соединяет протоколы хранения с различными драйверами устройств и блочными устройствами.Также предоставляет гибкие API для реализации дополнительных функций, предоставляемых клиентам (RAID, сжатие, дедупликация и т. д.) на уровне блоков.
Blobstore: реализует файловую (не POSIX*) упорядоченную семантику для SPDK. Этот компонент может поддерживать высокопроизводительные базы данных, контейнеры, виртуальные машины или другие рабочие нагрузки, которые не зависят от большей части набора функций файловой системы POSIX, таких как контроль доступа пользователей.
Протоколы хранения данных
Цель iSCSI: реализация установленной спецификации блочного трафика через Ethernet, что примерно в два раза эффективнее ввода-вывода ядра Linux. Текущая версия по умолчанию использует стек ядра TCP/IP. Цель NVMe-oF: внедрение новых Характеристики NVMe-oF .Цель NVMe-oF зависит от оборудования RDMA, но может обрабатывать до 40 Гбит/с трафика на одно ядро ЦП.
Цель yhost-scsi: компонент KVM/QEMU, использующий драйвер NVMe SPDK. Это позволяет виртуальным машинам получать доступ к носителям данных с меньшей задержкой и снижает общую загрузку ЦП при выполнении рабочих нагрузок с интенсивным вводом-выводом.
SPDK поддерживает не все архитектуры хранения.
Вот несколько вопросов, которые помогут вам определить, подходят ли компоненты SPDK для вашей архитектуры.
Система хранения данных основана на Linux или FreeBSD*? SPDK тестируется и поддерживается в основном на платформе Linux. Драйверы оборудования поддерживаются в FreeBSD и Linux. Основана ли аппаратная платформа хранения данных на архитектуре Intel? SPDK в полной мере использует преимущества платформы Intel, протестирован и оптимизирован для микропроцессоров и систем Intel. Сохраняется ли производительность хранилища в пользовательском режиме? SPDK обеспечивает повышение производительности и эффективности за счет перераспределения производительности в пользовательский режим.
Внедряя в свои приложения такие функции SPDK, как цели NVMe-oF, инициатор или Blobstore, вы можете запустить весь конвейер обработки данных в пользовательском пространстве и тем самым значительно повысить эффективность работы.
Позволяет ли системная архитектура реализовать драйверы PMD без встроенной блокировки? модель? Поскольку драйверы PMD постоянно работают в своих собственных потоках (вместо того, чтобы переходить в спящий режим и освобождать процессор во время простоя), к ним предъявляются строгие требования к модели потоков.
Поддерживает ли ваша система пакет средств разработки Data Plane (DPDK) для обработки рабочих нагрузок сетевых пакетов? SPDK использует те же примитивы и модели программирования, что и DPDK, поэтому клиенты, которые в настоящее время используют DPDK, получат выгоду от интеграции с SPDK. Однако если пользователи используют SPDK, добавление функций DPDK для сетевой обработки может дать значительные преимущества.
Обладает ли команда разработчиков необходимыми знаниями для самостоятельного изучения и устранения проблем? Корпорация Intel не берет на себя никаких обязательств по поддержке этого программного решения.
И Intel, и сообщество открытого исходного кода, работающее с SPDK, будут прилагать коммерчески разумные усилия для расследования возможных ошибок в немодифицированных выпущенных программах, но Intel ни при каких обстоятельствах не будет брать на себя никаких обязательств перед клиентами в отношении какого-либо обслуживания или поддержки этого программного решения.
Чтобы узнать больше о СПДК, заполните контактная форма запроса или посетите сайт СПДК.
io для доступа к списку рассылки, документации и блогам.
Функции и преимущества технологий Intel различаются в зависимости от конфигурации вашей системы.
Может потребоваться активация определенного оборудования, программного обеспечения или услуг.
Производительность может варьироваться в зависимости от конфигурации системы.
Для получения дополнительной информации обратитесь к производителю или продавцу вашего оборудования или посетите intel.com .
Программное обеспечение и рабочие нагрузки, используемые в тестах производительности, могли быть оптимизированы для достижения наилучшей производительности только на микропроцессорах Intel. Тесты производительности, такие как SYSmark* и MobileMark*, проводятся с использованием конкретных компьютерных систем, компонентов, программного обеспечения, операций и функций.
Любое изменение любого из этих факторов может привести к изменению результатов.
При выборе продуктов, которые вы покупаете, вам следует ознакомиться с другой информацией и тестами производительности, включая тесты производительности конкретного продукта в сочетании с другими продуктами.
Конфигурация для тестов производительности
- Два процессора Intel Xeon E5-2699 v3: 18 ядер, 2,3 ГГц (гиперпоточность отключена)
- Примечание.
При тестировании производительности использовался один сокет процессора.
- Примечание.
- 32 ГБ оперативной памяти DDR4, 2133 MTPS
- 4 канала памяти на процессор
- Один двухранговый модуль DIMM емкостью 4 ГБ на канал
- 4 канала памяти на процессор
- Сервер Ubuntu* (Linux) 14.10
- Ядро 3.16.0-30-общее
- Контроллер Ethernet Intel XL710, 40GbE
- Восемь накопителей P3700 NVMe
- Конфигурация NVMe
- Восемь PCIe* Gen 3, четыре NVMe
- Четыре 4 NVMe — первый разъем x16 (в BIOS разделен на четыре x4)
- Еще четыре NVMe — второй разъем x16 (в биосе разделен на четыре x4)
- Твердотельный накопитель Intel DC P3700 Series емкостью 800 ГБ
- Версия прошивки: 8DV10102
- Восемь PCIe* Gen 3, четыре NVMe
- Конфигурация теста FIO
- Прямой доступ: да
- Глубина очереди
- Произвольный ввод-вывод 4 КБ: 32 операции в очереди
- Последовательный ввод-вывод 64 КБ: 8 операций в очереди
- Время подготовки: 30 секунд.
- Время выполнения: 180 секунд
- Норандомная карта: 1
- Система ввода-вывода: Либайо
- Количество заданий: 1
- Конфигурация биоса
- Технология Speed Step: отключена
- Технология Turbo Boost: отключена
- Политика мощности и производительности ЦП: Лучшая производительность
адрес .
Теги: #nvme #sds #программно-определяемое хранилище #Комплект разработки производительности хранилища #Высокая производительность
-
Весна
19 Oct, 24 -
Как Работать, Не «Работая»
19 Oct, 24 -
Как Презентовать Веб-Дизайн?
19 Oct, 24 -
Создавать Pdf, Не Выходя Из Браузера
19 Oct, 24