DMA означает прямой доступ к памяти. Это означает, что приложения могут напрямую обращаться к памяти хоста (чтение/запись) без вмешательства ЦП. Если вы сделаете это между хостами, это станет удаленным прямым доступом к памяти (RDMA).
Читая о RDMA, вы заметите несколько терминов, используемых для описания его преимуществ. Такие термины, как «нулевая копия», «обход ядра», «разгрузка протокола» и «ускорение протокола».
Для использования RDMA обычно требуется специализированное сетевое оборудование, реализующее протоколы InfiniBand, Omni-Path, RoCE или iWARP. Soft-RoCE обеспечивает функциональность RDMA через стандартный сетевой адаптер Ethernet.
Протокол верхнего уровня (ULP) в ядре реализует службы ускорения RDMA, такие как IP (например, IPoIB) и хранилище (например, iSER, SRP). Приложениям не обязательно поддерживать RDMA, чтобы воспользоваться услугами RDMA, предоставляемыми этими ядрами.
Прикладное программное обеспечение может знать о RDMA, используя API-интерфейсы RDMA (например, libibverbs, libfabrics) или платформы, поддерживающие RDMA (например, openmpi). Эти приложения больше всего выиграют от сетей, реализующих RDMA.
InfiniBand (сокращенно IB) является альтернативой Ethernet и Fibre Channel. ИБ поставлятьвысокийпропускная способностьи Низкий Задерживать。IB Данные могут передаваться напрямую между устройствами хранения на одном компьютере и пользовательским пространством на другом компьютере, минуя и избегая накладных расходов на системные вызовы. ИБ Адаптер может обрабатывать сетевые протоколы, что аналогично CPU Сетевые протоколы Ethernet, работающие на них, различаются. Это позволяет операционной системе и CPU существоватьруководитьвысокийпропускная способность остается бездействующей во время передачи, что верно 10Gb+ Может быть реальная проблема с Ethernet.
Аппаратное обеспечение IB производится компаниями Mellanox (которая объединилась с Voltaire и пользуется значительной поддержкой Oracle) и Intel (которая приобрела IB-подразделение QLogic в 2012 году). IB чаще всего используется в суперкомпьютерах, кластерах и центрах обработки данных. IBM, HP и Cray также являются членами руководящего комитета InfiniBand. Facebook, Twitter, eBay, YouTube и PayPal являются примерами пользователей IB.
IB программное обеспечениедасуществоватьOpenFabrics Разработано в рамках Альянса открытого исходного кода.
Скорость передачи IB изначально соответствовала максимальной скорости передачи, поддерживаемой PCI Express (сокращенно PCIe). Позже, когда прогресс PCIe становился все меньше и меньше, скорость передачи соответствовала другим технологиям ввода-вывода и количеству линий PCIe на порт. Наоборот, оно увеличилось. Он был запущен с использованием SDR (одиночная скорость передачи данных) со скоростью передачи сигналов 2,5 Гбит/с на полосу (соответствует PCI Express v1.0) и добавлен: DDR (двойная скорость передачи данных) 5 Гбит/с (PCI Express v2.0). ) ); QDR (Quad Data Speed) 10 Гбит/с (соответствует пропускной способности PCI Express 3.0 за счет улучшения кодирования PCIe 3.0, а не скорости передачи сигналов); FDR (скорость передачи данных 14) со скоростью 14,0625 Гбит/с (соответствует 16GFC Fibre Channel). IB теперь предлагает 25 Гбит/с EDR (повышенная скорость передачи данных) (соответствует 25 Гбит Ethernet). Планируется достичь HDR (высокой скорости передачи данных) 50 Гбит/с примерно в 2017 году.
потому что SDR、DDR и QDR используемая версия 8/10 кодировка (8 требуются битовые данные 10 битовая сигнализация), поэтому эти версии очень эффективны. пропускная способность сведена к 80%:SDR для 2 Гбит/с/канал DDR; Скорость для 4 Гбит/с/канал;и 8 Гбит/с/канал КДР. от FDR Старт, ИБ использовать 64/66 Кодирование, позволяющее повысить эффективность пропускная способность против скорости передачи сигналов для 96.97%:FDR для 13.64Gb/s/link;EDR для 24,24 Гбит/с/канал и 48.48 Гбит/с/канал HDR。
IB оборудование способно передавать данные по нескольким каналам, хотя коммерческие продукты стандартизированы для каждого кабеля. 4 ссылки.
когдаиспользоватьобщийиз 4X При объединении оборудования это позволяет эффективно достичь следующей суммарной эффективной пропускная способность: 8Gb/s из SDR;DDR 16Gb/s;32Gb/s из QDR;FDR для 54.54Gb/s;EDR для 96.97Gb/s;и 193.94Gb/s из HDR。
IBиз Задерживатьочень маленький:SDR(5us);DDR(2.5us);QDR(1.3us);FDR(0.7us);EDR(0.5us);и HDR(< 0,5 мкс). Для сравнения, 10Гб Ethernet больше похож на 7.22us,да FDR Задерживатьиздесять раз。
IB оборудование почти всегда обратно совместимо. Контакт должен быть установлен на основе наименьшего общего знаменателя. Применимо к PCI Express 8x Слоты из DDR Адаптер должен быть доступен по адресу PCI Express 4x Вакансии в Слотах (пропускная способностьдляполовина)。
использовать QDR Когда,ИБ Пассивные медные кабели могут иметь мощность до 7 рис;использовать FDR Когда, ИБ Пассивные медные кабели достигают 3 рис.
использовать FDR Когда, ИБ Активный оптоволоконный (световой) кабель длиной до 300 Рис (FDR10 Только для 100 рис).
Mellanox MetroX Устройство позволяет до 80 Километры из соединений. Задержка на километр увеличивается прибл. 5us。
Кабель IB позволяет напрямую соединить два компьютера без переключателя IB; кресткабель Не существуетсуществовать。
Как работает РДМАда через аппаратный путь (NIC исеть) перенос данных из памяти пользовательского приложения на одном хосте непосредственно в память пользовательского приложения на другом хосте. RDMAда нижняя картина средняя из синей линии (картина 3). Зеленая линия изображает традицию, о которой вы уже знаете. TCP/IP поток
Обратите внимание,Если приложение находится в пространстве ядра,Он «всего лишь» обходит стек операционной системы и системные драйверы.,Но это все равно обеспечивает значительное улучшение производительности.
Эти термины относятся к изда RDMA по обеспечивает прирост скорости, потому что для отличается от обычного из TCP/IP Строка для сравнения с буфером памяти приложения копироватьприезжать буфер памяти ядра несколько раз. RDMA обеспечивает проживание посредством других операций по копированию. NIC,NIC По сети будет отрегулировано приезжать другие хозяева. существуют на другом хосте, должен произойти обратный процесс. NIC из данных в буфере памяти копприезжать пространство ядра и снова существовать в пространстве ядра копировать и отправлятьприезжать в пространство пользователя, прибывая в буфер памяти приложения.
RDMA позволяет избежать накладных расходов (ноль копировать). Сделав это, вы также сможете избежать переключения контекста между пользовательским пространством и пространством ядра (обход ядра). Это значительно ускоряет дело.
Фактически работа перекладывается на NIC, поэтому он обходит хост из CPU(CPU Offload или Обход). Это имеет два преимущества:
1. Приложения могут получать доступ к (удаленной) памяти без процессов ядра и пользовательского пространства, потребляющих какой-либо хост. CPU Читайте и пишите периодически.
2. Кэш ЦП не будет заполнен содержимым доступной памяти.
CPU Циклический кэш можно использовать для реальных рабочих нагрузок приложений, а не для перемещения данных. Преимущества, как правило, CPU Сокращение накладных расходов 20% приезжать 25%
Наконец, РДМА Протокол, называемый для, может быть выполнен для ускорения операций. Фактическое перемещение данных ускоряется за счет транзакций на основе сообщений и возможности сбора/разброса (SGL) (чтение нескольких буферов и создание их целиком с одновременной записью в несколько буферов). В этом есть много деталей. Презентации и публикации SNIA (Промышленная ассоциация хранилищесеть) и академических исследователей легко доступны в Интернете и могут получить довольно техническую информацию.
Протокол RDMA по своей сути быстрый.
Кромевысокопроизводительные В дополнение к расчетам, за последнее десятилетие мы также стали свидетелями того, как поток туристов из различных стран Востока и Запада продолжает значительно расти. Все начинается с виртуализации, которая наряду с мобильностью виртуальных машин приводит к повышению производительности. Масштабируемость многих ресурсов (сеть, хранилище, вычисления) создает проблемы. Самое главное, мы видим такие тенденции, как гиперконвергентная инфраструктура (HCI), другие варианты использования, потребляющие больше ресурсов. способность. Тем временем, по мере того, как мы получаем более быстрые варианты хранения (NVMe, различные типы NVDIMM (N, F, P) или Intel из 3D XPoint),правда ультра-низкий спрос также увеличился,Это привело к созданию новой архитектуры, окружающей его функциональность.
картина 4: Без сомнения, энергонезависимый Модули DIMM (и все их варианты) еще больше повысят потребность в RDMA изнуждаться(картина Источник фильма DELL поставлять)
В отличие от сохранения их вызова в одном и том же контексте (т.е. переключение контекста не выполняется) и записи операций с данными оптимизационным способом, операции управления (все операции создания/уничтожения/запроса/изменения) очень дороги, потому что для:
Как правило, вам следует избегать вызова управляющих операций или сокращения их существования в пути данных.
Для операций с данными рассматриваются следующие глаголы (интерфейс глаголов):
При использовании интерфейса глаголов ibv_post_*(), Когда вы придете отправить запрос на работу WR,существовать публикация нескольких запросов на работу в виде связанного списка за один вызов,Вместо того, чтобы делать несколько звонков по одному рабочему запросу,Будет ли обеспечивать лучшую производительность,Потому что это позволяет низкоуровневым драйверам выполнять оптимизацию.
обработка события use завершена,существуют Подтверждение нескольких завершений за один вызов вместо нескольких вызовов за вызов Будет ли обеспечивать лучшую производительность,Потому что для выполняет меньше мьютексов.
Наличие нескольких записей разброса/сбора в рабочем запросе (запрос отрегулировать или запрос перенимать) означает, что RDMA прочитает эти записи и прочитает их для ссылки из памяти. Одна запись разброса/сбора работает лучше, чем несколько записей разброса/сбора.
Если установлен флаг ограждения, запросы на изотправлять будут блокироваться до тех пор, пока не приедут все предыдущие из RDMA Чтение и запрос на отправку атома завершен. Это уменьшит пропускную способность способность。
Атомарные операции позволяют выполнять чтение-изменение-запись атомарно. Обычно это снижает производительность, поскольку обычно это приводит к блокировке доступа к памяти (в зависимости от реализации).
ibv_poll_cq() позволяет читать несколько дополнений одновременно. Если количество завершений работ в CQ меньше количества завершений работ, пытающихся прочитать из,тогда это означает, что CQдля пуст,Не нужно проверять, есть ли еще работа.
Когда использование верно называется многопроцессорностью (SMP) машине, привязать процесс прибытия к конкретному из ЦП/ядра можно использовать лучше Процессор/ядро, таким образом, обеспечивает лучшую производительность. По словам машины Количество ЦП/ядер для выполнения процесса и распределения процесса приезжать каждый CPU/Core может быть хорошей идеей. Это возможно с помощью утилиты «Набор задач».
При неравномерном доступе к памяти (NUMA) При работе на компьютере рассматривается привязка процесса для RDMA оборудованиеизместный NUMA узелиз Процессор/ядро могут работать быстрее из-за фориз CPU Доступ в то время как обеспечивает лучшую производительность. Распространить процесс прибытия на всех местных CPU/Core может быть хорошей идеей.
По сравнению с сипользовать верезиз буфера памяти, использовать верезиз буфера строки кэша (существовать S/G Список, запрос на отправку, запрос на перенимание и данные) будут предоставлены на высоком уровне производительность;это уменьшит CPU Количество циклов и количество обращений к памяти.
Повторная передача снижает производительность. Существует две основные причины повторной передачи в RDMA:
Некоторые устройства RDMA предоставляют счетчики, указывающие возникновение потока повторных попыток, но не все.
Когда QP входит в эти потоки,Установка QP.retry_cntиQP.rnr_retry в ноль приведет к сбою (т.е.,Выполнено с ошибками из).
Да,Если это неизбежно, повторите поток,Пожалуйста, сохраняйте между повторными передачами как можно меньше из-за заботы.
MTU Значение указывает максимальный размер полезной нагрузки пакета, который может быть отправлен (т. е. исключая заголовки пакетов). Из опыта, потому что чтовсе MTU Значения размеров заголовков пакетов одинаковы, поэтому используется самый большой доступный размер. MTU Размер каждого пакета будет уменьшен из-за «Цены, уплаченной (накладные расходы)»; процент способностииз увеличится. Но да, не который RDMA оборудование может быть ниже максимального значения поддержки из MTU Значение по обеспечивает наилучшую производительность. Человек должен провести несколько тестов, чтобы найти лучший для него. MTU。
Отправка нескольких больших сообщений более эффективна, чем отправка большого количества маленьких сообщений. На уровне приложения первый уровень должен собирать данные и отправлять большие сообщения через RDMA.
Обработка нескольких невыполненных запросов на отрегулирование и постоянное поддержание очереди отправки полной (т. е. верная выдача нового запроса на отрегулирование при каждом опросе после завершения задания) позволит устройству RDMA Держит работать и работать. право его бездействия.
еслииспользовать RDMA Чтение или атомарная операция, рекомендуется QP Настройка для и запуск из нескольких RDMA Чтение и атомарная операция соответствуют использованию, потому что это даст более высокий результат. BW。
существование регулировать очередь использовать селективную сигнализацию означает, что не каждый запрос на существование приведет к завершению задания в конце, что уменьшит количество завершений заданий, которые должны быть обработаны.
Для существования завершения задания добавляет место проживания в очередь завершения и немедленно считывает их, опрос даст наилучшие результаты для поданных (а не событие "даисполь зовать завершение задания").
существовать Поддержка встроеннаяотправлятьданныеиз RDMA оборудование, встроенная отправка небольшого сообщения будет лучше и з За внимание, потому что это исключено RDMA устройство (через PCIe bus) выполняет дополнительные чтения для чтения необходимой полезной нагрузки сообщения.
существовать QP изтаймаути min_rnr_timer Среднее использование Меньшее значение означает, что в случае возникновения ошибки и необходимости повторной попытки (независимо от удаленного QP Ответа нет (нет невыполненных запросов), а время ожидания перед повторной передачей будет короче.
Когда отправка содержит только непосредственные данные из сообщений,Запись RDMA с немедленным режимом будет иметь более высокую производительность, чем с немедленным.,Потому что в последнем случае будет прочитан незаконченный изопубликованный запрос на перенимать (существовать ответчик),И не просто да потребляется.
Использование SRQ позволяет сохранить общее количество невыполненных запросов на переживание.,Тем самым уменьшая потребление общей памяти,Вместо того, чтобы дадля каждой очереди, верно, публикуется много запросов на перенимание.
Зарегистрированная физически непрерывная память (например, огромные страницы) может позволить низкоуровневым драйверам выполнять оптимизацию, поскольку для требуется меньший объем трансляции адресов памяти (по сравнению с 4 КБ при сравнении со странным буфером памяти).
Создание различных очередей (верно очередь, общая очередь перенимания, очередь завершения) может потреблять много памяти. Люди должны выбирать их минимальные размеры, необходимые для их применения.
использовать задание по чтению событий завершено, устранит существующее CQ Выполнять непрерывный опрос необходимо, поскольку добавляет возможность приезда после завершения задания. CQ Когда, РДМА Устройство отправит событие.
Когда существуют отвечающие стороны, работа по чтению завершена,События запроса могут быть хорошим способом уведомить отправителя запроса о запросе.,Указывает на то, что сейчас хорошее время для чтения существования. Это уменьшает общее количество обработанных завершенных заданий.
конечно, несколько очередей используют одно и то же CQ и уменьшить CQ изTotal устранит необходимость проверки нескольких CQ Требуется, чтобы узнать, был ли выполнен невыполненный запрос на работу. Это можно сделать путем смешивания нескольких очередей отправки, нескольких очередей перенимания или их совместного использования. CQ завершить.
использование коллективного алгоритма уменьшит общее количество сообщений по линии из, и Общее количество сообщений и ресурсов для каждого узла в уменьшенном кластере. некоторый RDMA оборудование выполняет специальную операцию коллективного удаления, которая помогает снизить CPU Использование.
Если каждый узел должен иметь возможность отправлять сообщения любому другому узлу в подсети, то соединение QP (Надежный и Ненадежный) может быть плохим решением, поскольку для существования будет создаваться множество в каждом узле. QP。использовать UD QP Лучше, потому что к нему можно получить доступ из любой другой подсети. UD QP отправлятьиперениматьинформация。
$ lsmod | grep '\(^ib\|^rdma\)'
rdma_ucm 24576 0
ib_uverbs 65536 1 rdma_ucm
ib_iser 49152 0
rdma_cm 57344 3 ib_iser,rpcrdma,rdma_ucm
ib_umad 24576 0
ib_ipoib 114688 0
ib_cm 45056 2 rdma_cm,ib_ipoib
rdmavt 57344 1 hfi1
ib_core 208896 11 ib_iser,ib_cm,rdma_cm,ib_umad,ib_uverbs,rpcrdma,ib_ipoib,iw_cm,rdmavt,rdma_ucm,hfi1
верно RDMA из поддержки ядра DebianKernelОбслуживание команды。Ядродлямного моделейиз RDMA Аппаратное обеспечение предоставляет драйверы, а также обеспечивает ULP Поддержка модуля.
rdma-core: RDMA пакет пользовательского пространства Core от Debian HPCподдерживать。
Исторически ядро RDMA Пакет из исходного кода да Open Fabrics Enterprise Distribution (ОФЭД). В последнее время большая часть этой работы была перенесена в сферу проживания. rdma-core проект
kernel/drivers/infiniband/hw/ - hardware device drivers Драйвер аппаратного оборудования
kernel/drivers/infiniband/sw/ - software drivers (e.g. Soft-RoCE) Программный драйвер
kernel/drivers/infiniband/ulp/ - ULP modules Модуль протокола верхнего уровня
kernel/drivers/staging/ - new drivers/modules, may be RDMA-related. Новый драйвер/модуль
$ ibstat
(look at the Rate shown on the port you are using)
or
# iblinkinfo
(look at the middle part formatted like "4X 5.0 Gbps")
or
$ cat /sys/class/infiniband/<kernel module>/ports/<port number>/rate
20 Gb/sec (4X DDR)
*For the RoCE recommended configuration and verification, please click here . This post shows the list of relevant pointers for RDMA/RoCE Solutions. For Storage Solutions, refer to Storage Solutions.
https://enterprise-support.nvidia.com/s/article/rdma-roce-solutions
>> Learn RDMA on the Mellanox Academy for free
Nvidia_Mellanox_CX5и6DX series network card_RDMA_RoCE_losslessиlossy_DCQCN congestion control_dynamic Connection и другие подробные пояснения — одна статья для начала работы с RDMAиRoCE lossless: Nvidia_Mellanox_CX5и6DX series network card_RDMA_RoCE_losslessиlossy_DCQCN контроль перегрузки_динамическое соединение и другие подробные пояснения - запись в одной статье RDMAиRoCE lossless-Tencent Cloud Developer Community-Tencent Cloud
делиться Написал: Dotan Barak , 8 июня 2013 г. 9 марта 2019 г. Tips and tricks to optimize your RDMA code - RDMAmojo RDMAmojo
https://blog.csdn.net/ssbandjl/article/details/134987145
RDMAпроизводительностьоптимизация Краткое обсуждение опыта(один)https://zhuanlan.zhihu.com/p/522332998
Документ NSDI2023: анализ масштабируемой архитектуры SRNIC https://www.ctyun.cn/developer/article/416756725661765
Посмотрите на потерю производительности операций RDMA с микроперспективы транзакций PCIe (транзакции PCIE/дверной звонок/встроенные характеристики сетевой карты Mellanox и т. д.): https://mp.weixin.qq.com/s/gtG3vZ-p-H-XE9IIVvRp9g
Ресурсы RDMA: https://gist.github.com/aagontuk/705315c94eeaf657b3f35b011c233c19
DEBIAN RDMA WiKi: https://wiki.debian.org/RDMA
ArchLinux IB WiKi: https://wiki.archlinux.org/title/InfiniBand
файл readme irdma (между rdma): https://downloadmirror.intel.com/738730/README_irdma.txt
блог: https://cloud.tencent.com/developer/user/5060293/articles | https://logread.cn | https://blog.csdn.net/ssbandjl
https://cloud.tencent.com/developer/user/5060293/video
Краткое описание ДАОС: https://cloud.tencent.com/developer/article/2344030