基础知识
什么是 RDMA?
RDMA 如何在不经过 CPU 拷贝和内核往返的情况下,在机器之间直接搬运数据。
约 4 分钟
传统路径的问题
在普通 TCP 套接字上,数据要多次穿越内核边界:网卡中断 CPU,内核把报文拷进 socket 缓冲,用户态再拷一次到应用。每一跳都增加时延、占用本可用于业务负载的 CPU。
在 25–400 Gb/s 下,拷贝本身会成为瓶颈——网络搬运比特的速度超过了主机拷贝的速度。
内核旁路与零拷贝
RDMA 让网卡直接写入对端地址空间中注册的内存区域。应用向队列对提交工作请求,网卡完全在硬件中完成传输并回报完成事件——无内核、无拷贝、无逐包中断。
其结果是单位数微秒的时延和接近零的 CPU 开销,这也是 AI 训练集群和 NVMe-oF 存储网络都建立在它之上的原因。
Verbs 操作
RDMA 提供一小组操作原语:
- Send/Receive——双边消息收发,类似套接字。
- Write——向远端内存区域写入数据。
- Read——从远端内存区域读取数据。
- Atomic——对远端内存执行比较交换类原子操作。