王恒宇-async-rdma 用Rust实现RDMA异步编程库.pdf
1、async-rdma:用Rust实现RDMA异步编程库主讲人:王恒宇演讲嘉宾介绍王恒宇async-rdma项目维护者 中科院软件所基础软件国家工程研究中心在读研究生 DatenLord社区RDMA相关开源项目贡献者 对RDMA、CPU、OS、Rust、Cloud Native等技术领域有广泛兴趣CONTENT目录2023K+01RDMA技术简介Rust异步RDMA编程库异步RDMA框架设计原理0203Part 01RDMA技术简介 RDMA概念简介 RDMA应用痛点RDMA概念简介传统以太网RDMA主要概念App工作请求(Work Request,WR):RDMA操作指令,包含操作类型如Rea
2、d/Write,和数据的位置和大小。工作完成(Work Completion,WC):工作请求完成标识,描述完成的情况如操作成功与否,错误代码等。Lib&DriverWR,WC映射为驱动层中的工作队列元素(Work Queue Element,WQE)和完成队列元素(Completion Queue Element,CQE),并最终与硬件网卡交互。RDMA概念简介操作类型SEND&RECV(双端操作)Send前需要对端先Receive对端CPU需要感知每次收发操作用于交换元数据等小数据量操作READ&WRITE(单端操作)请求发送前对端无需进行操作对端CPU不感知单端操作,网卡自动响应RDMA
3、的主要优势所在,适用于大数据量传输RDMA概念简介RDMA概念简介RDMA 编程接口-Verbs API以太网下基于Socket API编写应用;RDMA下基于Verbs API编写应用。支持IB/iWARP/RoCE三大RDMA协议,统一的接口使得RDMA程序可以无视底层的硬件和链路差异运行在不同的环境中。RDMA应用痛点RDMA 编程接口-Verbs API接口示例struct ibv_mr*ibv_reg_mr(struct ibv_pd*pd,void*addr,size_t length,enum ibv_access_flags access)int ibv_post_send(s
4、truct ibv_qp*qp,struct ibv_send_wr*wr,struct ibv_send_wr*bad_wr)数据结构示例struct ibv_send_wrRDMA应用痛点RDMA 开发痛点安全性难以保障裸指针传递参数,无法确定所指数据是否有效,容易遇到空指针、野指针、内存泄露和多次释放等常见内存安全问题。指针传递过程中可能丢失类型信息,造成类型安全问题。CPU、RDMA NIC 共享内存,多线程并发执行,存在并发安全问题。接口抽象水平低,易用性差Verbs 接口及其参数贴近硬件实现而非应用语义。参数繁多,概念复杂,错误信息不完善,开发效率低,调试困难。资源管理困难本地需管





点击查看更多