На главную/Технологии/RDMA: прямой доступ к памяти для ускорения серверных сетей
Технологии

RDMA: прямой доступ к памяти для ускорения серверных сетей

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

21 авг. 2026 г.
12 мин
RDMA: прямой доступ к памяти для ускорения серверных сетей

Современным серверам приходится постоянно перемещать огромные объёмы данных между вычислительными узлами. При обычной сетевой передаче значительная часть этой работы проходит через операционную систему и процессор: данные копируются между буферами, обрабатываются сетевым стеком и только затем отправляются другому серверу. На небольших нагрузках это почти незаметно, но в дата-центрах дополнительные операции начинают влиять на задержку и загрузку CPU.

RDMA меняет этот подход. Технология позволяет сетевому адаптеру перемещать данные непосредственно между областями памяти двух серверов, не заставляя центральный процессор обрабатывать каждый передаваемый блок. Благодаря этому уменьшается число копирований, снижается нагрузка на CPU и сокращается задержка обмена данными.

Особенно важен такой механизм там, где десятки, сотни или тысячи серверов должны постоянно обмениваться данными: в высокопроизводительных вычислениях, распределённых хранилищах, крупных базах данных и вычислительных кластерах.

Что такое RDMA и зачем эта технология нужна

Аббревиатура RDMA расшифровывается как Remote Direct Memory Access, то есть удалённый прямой доступ к памяти. Главная идея технологии заключается в том, что сетевое оборудование одного компьютера может передать данные непосредственно в заранее разрешённую область оперативной памяти другого компьютера.

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

Каждый такой этап требует времени. Кроме того, данные могут несколько раз копироваться между пользовательской памятью и памятью ядра ОС. Если сервер обрабатывает тысячи или миллионы сетевых операций, эти дополнительные действия начинают расходовать заметную часть вычислительных ресурсов.

RDMA позволяет сократить этот путь. Сетевой адаптер с поддержкой технологии, который часто называют RNIC - RDMA Network Interface Card, самостоятельно выполняет перемещение данных между памятью и сетью. Для самого копирования используется механизм DMA - Direct Memory Access. Благодаря ему оборудование может работать с оперативной памятью без того, чтобы процессор вручную переносил каждый блок данных.

Отсюда появляются два важных свойства RDMA - zero-copy и kernel bypass.

  • Zero-copy означает, что данные не требуется многократно копировать между промежуточными системными буферами. Сетевой адаптер может читать их из памяти приложения или записывать непосредственно в предназначенную для них область памяти.
  • Kernel bypass означает сокращение участия ядра операционной системы непосредственно в обработке сетевых операций. Приложению не приходится каждый раз проходить весь традиционный сетевой стек ОС, что уменьшает количество переключений контекста и связанных с ними задержек.

При этом выражение "RDMA работает без участия процессора" не следует воспринимать буквально. CPU всё ещё нужен для запуска приложения, настройки соединения, регистрации памяти и управления операциями. RDMA освобождает процессор прежде всего от постоянного копирования и обработки каждого блока данных во время самой передачи.

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

Как работает RDMA: путь данных от одного сервера к другому

Чтобы RDMA мог обращаться к оперативной памяти напрямую, приложению недостаточно просто указать адрес нужного массива данных. Сначала определённая область памяти должна быть зарегистрирована и передана под управление RDMA-адаптера.

Регистрация области памяти

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

Зарегистрированная область получает специальные ключи доступа. Они ограничивают, какие участки памяти доступны локальному или удалённому узлу. Поэтому RDMA не означает, что один сервер получает свободный доступ ко всей оперативной памяти другого компьютера.

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

RDMA NIC и передача напрямую в RAM

Упрощённо путь данных можно представить так:

  • оперативная память сервера → RDMA-адаптер → сеть → RDMA-адаптер второго сервера → оперативная память

Если серверу нужно отправить большой блок данных, приложение помещает описание операции в очередь отправки. Вместо копирования всего содержимого в системный сетевой буфер оно сообщает адаптеру, где данные находятся и куда их необходимо передать.

RNIC получает команду, считывает данные из зарегистрированной памяти через DMA, формирует сетевые пакеты и отправляет их удалённому узлу. На принимающей стороне другой RDMA-адаптер может записать полученную информацию непосредственно в заранее подготовленную область RAM.

Процессор при этом не занимается переносом каждого блока между буферами. Он инициирует операцию, а затем может продолжать выполнять другие задачи.

Для взаимодействия приложения с адаптером используются очереди. Обычно выделяют Send Queue для операций, которые необходимо выполнить, и Completion Queue, куда оборудование помещает информацию о завершённых действиях. Приложение может проверять эту очередь и узнавать, завершилась ли передача.

Такой подход позволяет обрабатывать большое количество сетевых операций с меньшим количеством обращений к ядру операционной системы.

Какие операции выполняет RDMA

RDMA поддерживает несколько основных способов обмена данными. Наиболее характерные из них - RDMA Read и RDMA Write.

  • При RDMA Write сервер отправляет данные и записывает их непосредственно в разрешённую область памяти удалённого компьютера. Принимающему процессору не требуется отдельно принимать каждый блок через обычный сетевой вызов.
  • RDMA Read работает в противоположном направлении. Один узел запрашивает содержимое зарегистрированной памяти другого сервера, после чего сетевые адаптеры выполняют передачу.

Существуют также операции Send/Receive. Они больше напоминают традиционную передачу сообщений: отправитель помещает сообщение в сеть, а принимающая сторона заранее подготавливает буфер для его получения.

Разница важна для архитектуры приложений. RDMA Read и Write относятся к односторонним операциям: удалённый CPU не обязан активно участвовать непосредственно в момент доступа к данным. Send/Receive требуют большего взаимодействия между двумя сторонами, но часто удобнее для передачи команд, небольших сообщений и служебной информации.

Именно сочетание DMA, зарегистрированной памяти, очередей и аппаратной обработки сетевых операций позволяет RDMA уменьшить задержку, число копирований данных и нагрузку на процессор.

RDMA против обычной передачи данных по TCP

Разницу между RDMA и традиционной сетью проще всего увидеть по пути, который проходят данные.

При классической передаче через TCP схема в упрощённом виде выглядит так:

  • приложение → ядро ОС → TCP/IP → драйвер → сетевой адаптер → сеть

На другом сервере происходит обратный процесс:

  • сеть → сетевой адаптер → драйвер → TCP/IP → ядро ОС → приложение

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

RDMA решает более специализированную задачу. Его путь ближе к следующему:

  • зарегистрированная память → RDMA-адаптер → сеть → RDMA-адаптер → зарегистрированная память

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

При традиционной передаче могут возникать копирования между памятью приложения и буферами ядра. RDMA позволяет использовать zero-copy и передавать данные непосредственно из подготовленной области памяти.

Второе отличие - количество переходов между пользовательским приложением и ядром операционной системы. Каждый системный вызов и переключение контекста требует времени. Kernel bypass позволяет RDMA-приложению работать с сетевым адаптером значительно прямее.

Поэтому особенно заметно преимущество RDMA при передаче большого количества данных с высокой частотой. Снижение нагрузки на CPU означает, что сервер может использовать больше вычислительных ресурсов для основной задачи: работы базы данных, обработки запросов, научных вычислений или расчётов на GPU.

Задержка тоже уменьшается. Если система не должна несколько раз копировать данные и проводить каждую операцию через полный программный сетевой стек, между отправкой запроса и фактическим перемещением информации проходит меньше времени.

При этом RDMA нельзя считать полной заменой TCP. Обычные TCP/IP-сети проще разворачивать, они работают практически на любом сетевом оборудовании и подходят для большинства веб-сервисов, приложений и пользовательского трафика.

RDMA требует совместимого оборудования, специальной программной поддержки и более тщательно настроенной сетевой инфраструктуры. Поэтому выигрыш от него особенно важен там, где микросекунды задержки и загрузка процессора действительно влияют на производительность всей системы.

InfiniBand, RoCE и другие варианты RDMA

RDMA - это не отдельный тип кабеля или единственный сетевой протокол. Это набор механизмов прямого доступа к удалённой памяти, который может работать поверх разных сетевых технологий. На практике чаще всего встречаются InfiniBand и RoCE, а значительно реже - iWARP.

InfiniBand

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

В отличие от обычной Ethernet-сети, InfiniBand представляет собой специализированную сетевую архитектуру со своими адаптерами, коммутаторами и механизмами управления. Сетевые адаптеры здесь часто называют HCA - Host Channel Adapter.

Преимущество такого подхода заключается в том, что вся инфраструктура изначально рассчитана на высокопроизводительную передачу данных. Недостаток очевиден: для внедрения требуется совместимое оборудование и отдельная сеть, что увеличивает стоимость и усложняет инфраструктуру.

RDMA over Converged Ethernet - RoCE

Чтобы получить преимущества RDMA без полного перехода на InfiniBand, появилась технология RDMA over Converged Ethernet, или RoCE. Она переносит семантику RDMA в Ethernet-сети и позволяет использовать привычную инфраструктуру дата-центров с совместимыми сетевыми картами и коммутаторами.

Существует две основные версии.

  • RoCE v1 работает непосредственно на канальном уровне Ethernet. Из-за этого обмен ограничен одной Ethernet-сетью и не может обычным образом маршрутизироваться через IP-маршрутизаторы.
  • RoCE v2 добавляет IP и UDP. Пакеты RDMA благодаря этому можно маршрутизировать между сетями уровня L3, что значительно удобнее для крупных дата-центров. Для RoCE v2 используется UDP-порт 4791.

На первый взгляд может показаться, что достаточно установить RDMA-совместимые сетевые карты и включить RoCE. На практике сеть приходится тщательно настраивать. Для стабильной передачи важны управление перегрузками, очередями и приоритетами трафика. В таких сетях применяются механизмы QoS, ECN и, в некоторых конфигурациях, Priority Flow Control.

Причина заключается в чувствительности высокоскоростного RDMA-трафика к потерям и перегрузкам. Если тысячи серверов одновременно начинают передавать большие объёмы данных, плохо настроенная сеть может потерять значительную часть преимуществ низкой задержки.

Именно поэтому RoCE особенно интересен крупным дата-центрам: он позволяет получить прямую передачу данных между памятью серверов, сохранив Ethernet в качестве основы сетевой инфраструктуры.

Существует и iWARP - вариант RDMA поверх TCP/IP. Он способен работать в обычных маршрутизируемых Ethernet-сетях и не требует тех же подходов к практически без потерь передаче, что характерны для многих RoCE-инсталляций. Однако сегодня в высокопроизводительных кластерах значительно чаще обсуждаются InfiniBand и RoCE.

Где используется RDMA и зачем он современным дата-центрам

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

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

RDMA уменьшает эти накладные расходы и позволяет вычислительным узлам быстрее обмениваться данными с меньшей нагрузкой на CPU. Именно поэтому технология давно используется в HPC и суперкомпьютерных системах.

Другой важный сценарий - распределённые системы хранения. Серверу иногда требуется работать с накопителем, физически расположенным на другом узле, почти так же быстро, как с локальным устройством. На этом принципе построены некоторые реализации NVMe over Fabrics, где RDMA может использоваться для передачи команд и данных NVMe по сети с минимальными накладными расходами.

RDMA применяется и в высоконагруженных базах данных, системах обработки больших массивов информации и других распределённых приложениях, где уменьшение сетевой задержки непосредственно сокращает время выполнения операций.

Особенно заметной роль RDMA стала с распространением огромных вычислительных кластеров для искусственного интеллекта. Обучение крупной модели может одновременно задействовать тысячи GPU. Каждый ускоритель выполняет только часть вычислений, поэтому узлам постоянно приходится обмениваться результатами и синхронизировать данные.

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

RDMA помогает сократить накладные расходы сетевого обмена, а InfiniBand и RoCE используются как основа высокоскоростных соединений между вычислительными узлами. Подробнее о том, почему сеть становится одним из ключевых компонентов больших GPU-кластеров, можно прочитать в материале AI Fabric: как строится сеть для обучения нейросетей на тысячах GPU. RDMA обеспечивает прямой zero-copy путь между памятью разных узлов и уменьшает нагрузку на CPU.

Для GPU существуют и дополнительные технологии. Например, GPUDirect RDMA позволяет совместимому сетевому адаптеру обмениваться данными непосредственно с памятью GPU, сокращая необходимость промежуточного копирования через системную RAM. В масштабных вычислениях это ещё сильнее уменьшает количество лишних перемещений данных.

При проектировании серверов важно учитывать и расположение самой памяти. В многопроцессорных системах доступ к разным банкам RAM может иметь неодинаковую задержку, поэтому плохо подобранное размещение сетевого адаптера, CPU и памяти способно ограничить эффект даже от очень быстрой сети. Подробнее этот принцип разобран в статье NUMA-архитектура серверов: как устроена и почему она ломает производительность.

В результате RDMA имеет наибольшую ценность там, где одновременно выполняются три условия: передаётся много данных, задержка критична, а процессорное время слишком дорого, чтобы расходовать его на постоянное обслуживание сетевого стека. Для обычной корпоративной сети это может быть ненужным усложнением, а для суперкомпьютера, распределённого хранилища или GPU-кластера - одним из факторов, определяющих производительность всей системы.

Заключение

RDMA решает одну из главных проблем высокопроизводительных серверных систем: процессору больше не нужно участвовать в каждом этапе сетевой передачи данных. После настройки соединения и регистрации памяти основную работу берёт на себя RDMA-адаптер, который через DMA перемещает информацию непосредственно между памятью узлов.

Главные преимущества RDMA - низкая задержка, zero-copy, kernel bypass и снижение нагрузки на CPU. Особенно заметен эффект в системах, где серверы постоянно обмениваются большими объёмами информации: HPC-кластерах, распределённых хранилищах, высоконагруженных базах данных и инфраструктуре для обучения крупных ИИ-моделей.

При этом RDMA не заменяет обычные TCP/IP-сети. Для большинства приложений универсальность Ethernet и TCP важнее выигрыша в микросекундах. RDMA требует совместимого оборудования, специализированного программного обеспечения и, особенно в случае RoCE, правильно настроенной сетевой инфраструктуры.

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

Теги:

rdma
инфраструктура
серверы
высокопроизводительные-вычисления
infiniBand
roce
сети
zero-copy

Похожие статьи