RDMA(远程直接内存访问)是一种可以在不同主机之间共享内存的技术。它可以让用户在不同的计算机上直接访问对方的内存,而无需将数据复制到本地,从而大大减少了网络传输的延迟和开销。
1. 基本原理:RDMA通过使用DMA(直接内存访问)技术,可以在不同的计算机之间直接访问对方的内存,而无需将数据复制到本地。
2. 优势:RDMA能够显著提升网络性能,减少网络传输的延迟和开销,并且可以支持多种网络协议,如TCP/IP、InfiniBand和RoCE等。
3. 应用:RDMA技术应用于虚拟化、云计算、大数据分析、网络存储、HPC等领域。
4. 示例代码:
// RDMA Server端
struct rdma_cm_id *listen_id;
struct ibv_pd *pd;
struct ibv_cq *cq;
struct ibv_comp_channel *comp_chan;
struct ibv_mr *mr;
// 创建RDMA CM ID
rdma_create_id(NULL, &listen_id, NULL, RDMA_PS_TCP);
// 绑定端口
rdma_bind_addr(listen_id, (struct sockaddr *)&addr);
// 创建PD
pd = ibv_alloc_pd(listen_id->verbs);
// 创建CQ
cq = ibv_create_cq(listen_id->verbs, 10, NULL, comp_chan, 0);
// 注册内存
mr = ibv_reg_mr(pd, buf, size, IBV_ACCESS_LOCAL_WRITE | IBV_ACCESS_REMOTE_READ | IBV_ACCESS_REMOTE_WRITE);
// 开始
rdma_listen(listen_id, 10);
标签:
评论列表 (0)