远程直接内存访问 Remote Direct Memory Access (RDMA)
在计算机运算领域,远程直接内存访问 (Remote Direct Memory Access, 简称 RDMA) 是一种直接存储器访问技术,它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。 RDMA 可以释放许多资源,从而提高系统的吞吐量和性能。可以在远程计算机上执行读取和写入等操作,而无需中断该计算机的 CPU 。该技术有助于提高数据传输速率和低延迟网络,尤其适合在大规模并行计算机集群中使用。 RDMA 通过启用网络适配器将数据直接传输到系统缓冲区来使用零复制网络。
RDMA 的工作流程
RDMA 通过使用支持 RDMA 的网络接口控制器 (NIC) 进行操作,例如 InfiniBand 或 RoCE(融合以太网上的 RDMA)。这些 NIC 具有专用硬件,允许它们不需要 CPU 的参与,直接访问所连接系统的内存。当系统想要使用 RDMA 传输数据时,它会向 NIC 发送请求,然后 NIC 使用专用硬件将数据直接传输到另一个系统的内存。
RDMA 的优点:
- 高性能:RDMA 为系统之间的数据传输提供高性能,具有低延迟和高带宽。
- CPU 效率:RDMA 直接在系统之间传输数据,不涉及 CPU,从而释放系统资源用于其他任务。
- 减少网络拥塞:RDMA 通过实现系统之间的直接数据传输来减少网络拥塞,从而减少网络流量。
- 安全性:RDMA 通过在系统之间传输数据时对数据进行加密来提供增强的安全性。
- 可扩展性:RDMA 具有高度可扩展性,可以支持系统之间的大量数据传输。
远程直接内存访问 (RDMA) 的缺点:
- 兼容性:RDMA 需要专门的硬件和软件,可能并非所有系统都支持。
- 成本:RDMA 可能很昂贵,需要专门的硬件和软件,这对于所有组织来说可能并不具有成本效益。
- 复杂性:RDMA 的设置和管理可能很复杂,需要专门的知识和技能。
- 范围有限:RDMA 通常用于距离很近的系统之间的数据传输,限制了其应用范围。
- 协议有限:RDMA 仅兼容某些协议,这可能会限制其与其他系统的兼容性。
RDMA 的特点:
- 零复制网络:数据可以直接在应用程序的缓冲区之间发送和接收,而无需在网络层之间复制。
- 减少 CPU 参与:应用程序可以直接从远程服务器访问数据,而不消耗远程服务器的 CPU 时间。而且远程服务器的 CPU 缓存也不会被访问的内容填满。
- 有效的事务:数据以离散消息而不是流的形式发送和接收,从而消除了分离消息的需要。
参考来源
【1】https://www.geeksforgeeks.org/remote-direct-memory-access-rdma/
【2】https://en.wikipedia.org/wiki/Remote_direct_memory_access