. Я читал о RoCE, и там говорится о передаче нулевой копии данных между памятью на одном сервере напрямую в память приложения на другом сервере. В большинстве статей указывается, что это делается без участия процессора. Хотя я не понимаю, как это реализовано. Как данные попадают из адаптера в ОЗУ без какой-либо обработки со стороны ЦП? Как он узнает, где в оперативной памяти находятся данные приложения?
Я думаю, вы неправильно понимаете «без процессора». Это не означает, что ЦП вообще не задействован -, это просто означает, что ЦП не выполняет копирование. Он выполняет -через драйверы -настройку операции копирования, а затем аппаратное обеспечение выполняет фактическую обработку.
Ваша ссылка говорит об этом ОЧЕНЬ явно -только что прочитал:
RDMA поддерживает сеть с нулевым-копированием, позволяя сетевому адаптеру передача данных напрямую по проводу
Это операция копирования, а не настройка. Кто-то должен сказать сетевой адаптер.
Поймите, что современные сети, в которых это действительно работает, имеют скорость 100+ гигабит -10+ гигабайт -в секунду, часто объединяют несколько линий, а в наши дни максимальная скорость составляет 400 гигабит.
Это много -для ЦП, чтобы читать из ОЗУ, циклически перебирать его, а затем отправлять адаптеру, когда вы могли бы просто указать адаптеру, какую память читать и отправлять.
Но опять же, «отсутствие участия» — это не «совсем отсутствие ЦП», а «ЦП не копирует данные». Он по-прежнему осуществляет весь контроль.