使用RDMA跨机访问内存的带宽开销及相关技术疑问
RDMA跨机内存访问的带宽开销与内核绕过问题
关于两端内存带宽开销
是的,Machine-1通过RDMA访问Machine-2内存时,两端都会产生内存带宽开销:
- Machine-2端:RDMA网卡会通过DMA直接读取本地内存中的目标数据,这个过程会占用Machine-2的内存带宽;
- Machine-1端:RDMA网卡会将接收到的数据通过DMA直接写入Machine-1的指定内存区域,同样会占用Machine-1的内存带宽。
能否绕过内核网络栈?
完全可以。RDMA的核心优势之一就是支持用户态直接访问硬件,整个数据传输流程不需要内核网络栈参与,既不用内核处理协议报文,也不用在内核态和用户态之间做数据拷贝,能大幅降低延迟和CPU占用率。
是否无法绕开数据读写操作?
是的,绕不开。RDMA的本质是远程内存直接访问,不管是读还是写操作,都依赖内存数据的读写:
- 读操作:远端网卡要读取本地内存数据,本地网卡要接收数据并写入目标内存;
- 写操作:本地网卡读取内存数据并写入远端内存,远端网卡接收数据后写入本地内存。
这些DMA形式的内存读写是数据传输的必要环节,无法避免,但RDMA省去了内核栈处理带来的额外内存开销和CPU开销,仅保留了数据传输必需的内存带宽占用。
内容的提问来源于stack exchange,提问作者Frontier_Setter
相关产品推荐
相关产品推荐

