Рейтинг:2

Как RDMA передается между двумя серверами без ЦП?

флаг mx

Я читал о RoCE, и в нем говорится о передаче нулевой копии данных между памятью на одном сервере непосредственно в память приложения на другом сервере. Большинство статей подчеркните, что это делается без участия процессора. Хотя я не понимаю, как это реализовано. Как данные попадают из адаптера в ОЗУ без какой-либо обработки со стороны ЦП? Как он узнает, где в оперативной памяти находятся данные приложения?

djdomi avatar
флаг za
хорошо предоставляемый учебный материал или запрос не по теме, начните читать Википедию https://en.m.wikipedia.org/wiki/Remote_direct_memory_access, которая объясняет большинство дополнительных вопросов, которые у вас есть в настоящее время.
Рейтинг:3
флаг cn

Я думаю, вы неправильно понимаете «без процессора». Это не означает, что ЦП вообще не задействован — это просто означает, что ЦП не выполняет копирование. Он выполняет - через драйверы - настройку операции копирования, а затем аппаратное обеспечение выполняет фактическую обработку.

Ваша ссылка говорит об этом ОЧЕНЬ явно - просто прочитайте ее:

RDMA поддерживает сеть с нулевым копированием, позволяя сетевому адаптеру передача данных напрямую по проводу

Это операция копирования, а не установка. Кто-то должен сказать сетевой адаптер.

Поймите, что современные сети, в которых это действительно работает, имеют скорость 100+ гигабит — 10 гигабайт + — в секунду, часто объединяют несколько линий, а в наши дни максимальная скорость составляет 400 гигабит.

Это много - чтобы ЦП читал из ОЗУ, перебирал его, а затем отправлял в адаптер, когда вы могли бы просто указать адаптеру, какую память читать и отправлять.

Но опять же, «отсутствие участия» — это не «совсем отсутствие ЦП», а «ЦП не копирует данные». Он по-прежнему осуществляет весь контроль.

флаг br
Вы на 100% правы (как обычно, Том ;)) - я когда-либо использовал его только на Infiniband в качестве RDMA, а не ROCE, но странно, как мало вы получаете влияния на ЦП, есть некоторые, как вы говорите, но это замечательная технология - и, конечно же, позволяет использовать блоки общей памяти между многими серверами - полезно для таких вещей, как когерентность кеша. Надежный тоже!
Grant Curell avatar
флаг mx
Таким образом, в этом случае ЦП по-прежнему будет предоставлять адрес чтения / записи для сетевой карты, а затем сетевая карта будет передавать данные по сети на адрес, указанный в памяти напрямую?
флаг cn
Ага. Обратите внимание, что в зависимости от того, как настроено оборудование, устройства могут отображать пространство буфера в пространство памяти. Вы поняли идею? Например, у вас может быть буфер чтения НА Сетевом адаптере, который затем контроллер хранилища читает напрямую. В high-end есть МНОГО всего, например, RAID 5/6. Теперь есть сетевые карты, которые могут выполнять вычисления. Почему? Потому что RAID 6 может использовать диски на нескольких серверах.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.