GitHub user zchuango edited a discussion: openEuler总线协议urma和obmm技术路线讨论


BRPC社区伙伴们好,
我们正在从事拓展brpc框架更多通信协议的事情,近期调研了openEuler在[UB](https://www.openeuler.openatom.cn/zh/projects/ub-os-component/)(Unified
 Bus) 总线上的两套官方加速组件,现将链接中的技术细节、性能指标、应用场景以及一些想法梳理如下,**征求大家对 brpc 
后续整合方向的意见**(欢迎直接回复本帖)。
________________________________________

### 一、项目速览与官方性能
#### 1. OBMM(OpenEuler Boost Memory Management)

仓库:https://atomgit.com/openeuler/obmm
核心能力(摘自 README + 源码注释):
● **单节点内存扩展**:在单节点环境中扩展可用内存容量,突破本地物理内存限制。
● **多节点间共享内存**:在多节点环境中实现高效的内存数据共享和协作,目前可以做到把 DDR、GPU VRAM 统一为一段虚拟地址,用户态 mmap 
即可使用,**零拷贝attachment**。
● **PCIe P2P原生支持**:将远端内存映射为本地 NUMA 节点,应用可透明使用 load/store 访问,远端主机通过 PCIe 直接 
memcpy 写入本地内存池中,**本地CPU零参与、零 bounce**。

#### 2. **UMDK-URMA(Unified RDMA Messaging API)**
仓库:https://atomgit.com/openeuler/umdk
核心能力(摘自头文件 + 文档):
● **无连接UM语义**:驱动内重传/CRC,可靠且免 RC-QP 爆炸(单 jetty 可打 N 远端)。
● **统一内存操作语义**:统一内存语义操作接口,提供单边、双边及原子操作等远程内存操作方式,作为应用间通信的基础,RoCE 
v2、InfiniBand、PCIe P2P 均通过同一套 urma_post_send/recv API实现对接。
● **URMA-SHM模式**:远端映射同一块物理页,本机 & 跨机共享内存统一访问内存数据,做到全局共享,特别适合各种cache的one2all场景。
________________________________________

### **二、与 brpc 的契合点**
需求      | OBMM方案        | URMA方案        | 现有 TCP/RDMA对比
| ---------- | -------------------- | --------------- | ------------------ | 
本机零拷贝IPC | GPU/CPU 统一地址,mmap 即用 | URMA-SHM 映射同页 | TCP 需 1 次拷贝
跨机带宽 | PCIe P2P 40 GB/s | RoCE 50 GB/s 单流 | RC QP 单流 < 38 GB/s
连接规模    | 无 QP,线性增长     | 单 jetty 打 N 远端        | RC QP 万级爆炸
生命周期    | 引用计数自动释放      | UB 引用计数       | 进程自维护,易泄漏
________________________________________

### **三、可能的 brpc 技术路线**
**路线 A:OBMM-ShmemTransport**
● 只解决 本机 & 远端 PCIe P2P 场景,延迟最低(3.8-5 µs)。
● 代码简单,无内核模块依赖(OBMM ko 已主流发行版内置)。
**路线 B:URMA-UrmaTransport**
● 一套代码覆盖 跨机 RoCE/IB/UB,理论带宽 50 GB/s,连接数无上限。
● 需 UB 驱动,但已支持 PCIe P2P,未来可平滑切换到 CXL。
**路线 C:A+B 双后端**
● 小包 (<64 KB) 优先 OBMM-ShmemTransport,大包走 URMA-UrmaTransport,运行时自动选择。
● 维护两套 transport,但性能最优,且对用户透明。
________________________________________

### **四、征求社区意见**
1. 你们是否有 GPU-Direct / CXL / 异构内存 的真实业务?期望延迟/带宽指标是多少?
2. 更看重 最低延迟(OBMM)还是任务的吞吐量 (URMA) ?
3. 倾向于 单一后端还是双后端自动切换 ?
4. 生产环境是否接受 OBMM ko / UB ko依赖?

欢迎在评论区留下您宝贵意见:
● 实际用例与指标
● 部署环境(公有云、IDC、GPU 集群等)
● 对 A/B/C 路线的倾向
两周后我们将汇总反馈,发布详细设计文档与 draft PR,感谢!

GitHub link: https://github.com/apache/brpc/discussions/3217

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to