SuperAPI AI 工具集

rdma-verbs

编程与开发

查看项目

更新于 10-16 01:18

技能介绍

用途:指导 RDMA 编程,覆盖单边与双边操作、RC/UC/UD 传输类型、设备初始化,以及 RoCE 与 InfiniBand 的差异,适用于超低延迟存储或数据库网络、绕过 CPU 的远程内存访问、在以太网部署 RoCE、用 perftest 基准测试、集成 MPI 或自定义 RPC,以及排查连接与完成错误。

主要能力:设备发现与状态查看,包括 ibv_devices、ibv_devinfo、rdma link show、ibstat;libibverbs 基础流程,依次完成 ibv_get_device_list、ibv_open_device、ibv_alloc_pd、ibv_reg_mr、ibv_create_cq、ibv_create_qp;RC 连接需带外交换 lid、gid、qp_num、psn,并将 QP 从 INIT 转到 RTR 再到 RTS,也可用 librdmacm 简化连接管理;双边 Send/Recv 通过 ibv_post_recv、ibv_post_send 和 ibv_poll_cq 处理;单边 RDMA Write 使用 IBV_WR_RDMA_WRITE,配合远端地址与 rkey,远端 CPU 不被打断。

必要用法:编译示例用 gcc -o rdma_setup rdma_setup.c -libverbs;perftest 前需 modprobe ib_umad,服务端与客户端分别运行 ib_send_bw、ib_send_lat、ib_write_bw;RoCEv2 GID 可查看 /sys/class/infiniband/mlx5_0/ports/1/gids/3;Rust 可在 Cargo.toml 中引入 rdma-sys = "0.1"。

限制与注意:注册内存失败常因内存限制或权限,可检查 ulimit -l 与访问标志;rem_inv_req 表示 rkey 或地址错误,重连后需重新交换 MR 信息;RTS 失败要核对 lid/gid 与子网管理器;RoCE 丢包通常因交换机未启用 PFC,需要无损以太网;带宽偏低可增大 MTU 与工作请求;设备缺失需加载驱动并检查 ibv_devices。其余价格、平台与效果资料暂未提供。