当前位置:首页 > 报告详情

王恒宇-async-rdma 用Rust实现RDMA异步编程库‍.pdf

上传人: 2*** 编号:153875 2024-02-05 27页 1.96MB

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 接口及其参数贴近硬件实现而非应用语义。参数繁多,概念复杂,错误信息不完善,开发效率低,调试困难。资源管理困难本地需管

5、理设备、连接、队列、内存等资源,远程内存需要多端协同管理。内存管理方面存在高性能和高资源利用率之间的矛盾。RDMA应用痛点RDMA 开发常见问题示例gid_index默认初始化为0,导致ipv4环境下连接失败rnr_retry设置为7,无限重发导致死机Part 02Rust异步RDMA编程库 Rust语言特性 简化编程接口 辅助资源管理Rust语言特性Rust从语言层面解决了RDMA安全相关问题类型安全强类型语言,编译时进行严格类型检查,保障safe代码块类型安全。内存安全Rust中的每一个值都有一个对应的变量作为它的所有者。在同一时间内,值有且仅有一个所有者。当所有者离开自己的作用域时,它持

6、有的值就会被释放掉。同时可以有多个不可变引用或一个可变引用,但不能同时存在。并发安全所有权和类型系统在编译时检查并发安全问题。提供Send、Sync特性,将并发保证拓展至自定义类型。简化编程接口一个直观的对比:执行一次RDMA READ操作async-rdma:high-level Rust async RDMA API从建链到请求完成LOC:10+rdma-sys:low-level Verbs Rust binding从建链到请求完成LOC:1300简化编程接口高抽象层级API用例建立连接let rdma=Rd

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要介绍了由王恒宇主讲的关于Rust实现RDMA异步编程库的演讲内容。RDMA(Remote Direct Memory Access)是一种直接从一台计算机的内存到另一台计算机的内存的数据传输技术,无需涉及每台计算机的操作系统。RDMA技术具有概念简洁、性能优越的特点,但在应用开发中存在诸多痛点,如安全性、类型安全、并发安全问题以及资源管理困难等。Rust语言因其类型安全、内存安全和并发安全的特性,被认为是解决这些问题的理想选择。王恒宇介绍了如何使用Rust语言构建异步RDMA框架,该框架简化了编程接口,提供了资源管理辅助,并基于Rust的异步事件监听机制实现了高效的异步操作。此外,他还讨论了异步RDMA框架的设计原理,包括请求代理框架、异步事件监听以及多端内存管理。通过使用Rust的Send和Sync特性,异步RDMA框架保证了并发安全性,并通过代理本地与远程内存的申请与释放操作,简化了内存管理。参考文献和项目链接为对RDMA和Rust感兴趣的读者提供了进一步学习的资源。
"Rust如何改进RDMA编程?" "异步RDMA框架的工作原理是什么?" "RDMA技术在云计算中的应用有哪些挑战?"
客服
商务合作
小程序
服务号
折叠