拓冰建站拓冰建站
首页 / 资讯中心 / 正文

深入理解 RDMA 内存管理:海思 HNS RoCE 架构中的 HEM 表与 MTR 表有什么区别?

深入理解 RDMA 内存管理海思 HNS RoCE 架构中的 HEM 表与 MTR 表有什么区别在研究 RDMA远程直接内存访问技术或阅读华为海思HNS RoCE驱动源码时我们经常会遇到两个核心的多级索引表结构HEM 表和MTR 表。很多初学者容易把它们搞混认为它们都是用来做地址翻译的。本文将从管理对象、层级关系和数据流向三个维度带你彻底搞懂它们的根本区别。一、 快速对比HEM 与 MTR 核心差异如果用一句话总结HEM 表决定了网卡能不能找到这个 MR 的配置而 MTR 表决定了网卡最终把数据读写到哪片物理内存。维度HEM 表 (Hardware Entry Memory)MTR 表 (Memory Translate Region)核心功能元数据检索通过硬件 ID 索引到具体的 Context 实体。地址翻译实现虚拟地址VA到物理地址PA的映射。管理内容存放硬件上下文如MR Context / MPT、QPC、CQC 等。存放 MR 注册的数据缓存区Data Buffer的物理页地址。行业对应类似于常规 RDMA 中的 Context 控制块索引。对应传统 RDMA 架构中的MTTMemory Translation Table。生命周期通常在驱动初始化时创建全局管理。在用户每次调用ibv_reg_mr注册内存时动态创建。层级关系处于第一层寻址。处于第二层寻址由 HEM 引导而来。二、 详解 HEM 表资源的“全局索引目录”1. 为什么需要 HEM 表RDMA 网卡HCA需要管理海量的硬件对象比如队列对上下文QPC完成队列上下文CQC内存保护表上下文MPT / MR Context这些 Context 结构体数量庞大直接全量缓存在网卡片上On-chip是不现实的它们通常以 Entry 的形式存放在主机内存Host Memory中。2. HEM 的工作机制HEMHardware Entry Memory表就像是一个全局指针数组。它支持 0/1/2/3 级寻址根据资源量动态配置。当网卡拿到一个资源的硬件 ID例如从L_Key或R_Key中提取出的 MR Index时网卡通过硬件逻辑去查MR HEM 表就能在 Host 内存中精准定位到该 MR 对应的MR Context在 HNS 驱动中表现为hns_roce_v2_mpt_entry结构体。三、 详解 MTR 表真正的“地址翻译页表”1. 为什么需要 MTR 表当用户层调用ibv_reg_mr注册一段内存Memory Region时内核驱动会锁住Pin这部分虚拟内存防止其被置换到磁盘。因为应用层的虚拟地址VA在物理上通常是离散的网卡硬件执行 DMA 必须知道连续或离散的物理页地址PA。2. MTR 的工作机制MTRMemory Translate Region表是 HNS 驱动中对地址翻译区域的特称它本质上就是传统 RDMA 里的MTTMemory Translation Table或PBLPage Big List。MTR 表的每一项Entry直接记录了用户数据缓冲区的真实物理内存页地址。当 MTR 表创建完成后它的基地址、页大小、寻址层级Hop Num等关键信息会被填入到上层的MR Context中。四、 深度串联一次 RDMA 网络读写的“两级查表”全过程为了让大家更直观地理解我们来看一下当远端网卡发来一个 RDMA Write 请求时网卡硬件内部是如何连续使用这两张表的远端请求 (带着 R_Key 和 VA) │ ▼ 1. 提取 R_Key 中的 MR Index │ ▼ 2. 查找 [MR HEM 表] ────────► 寻址定位到 ──► [MR Context (MPT)] │ (校验权限与密钥) │ ▼ 3. 读取 MTR 基地址 ──────────► 结合 VA 检索 ──► [MTR 表 (页表)] │ (解析出物理地址 PA) │ ▼ 4. 执行 DMA ───────────────────────────────► 最终物理内存 (Host RAM)解析 Key网卡收到数据包提取出R_Key获得MR Index。第一级查 HEM网卡以 MR Index 检索MR HEM 表找到对应的MR Context并在其中校验密钥和读写权限。第二级查 MTR权限校验通过后网卡从该 MR Context 中提取出MTR 表的配置结合数据包里的虚拟地址VA偏移量去查MTR 表最终拿到具体的物理地址PA。落盘/落内存网卡通过 PCIe 总线向该物理地址发起 DMA完成零拷贝数据传输。五、 总结与排查建议在实际的 RDMA 性能调优或 Bug 排查中分清这两个表能帮你快速定位问题如果是 MTR 相关报错通常与内存注册MR Register有关需要关注Hop Num寻址层级是否过多导致查表延迟高或内存对齐、物理页连续性问题。如果是 HEM 相关报错通常发生在初始化或大规模创建 QP/MR 时提示硬件条目内存不足需要调整驱动的底层资源分配参数如num_mpts、num_qps等。希望这篇技术分享能帮你梳理清楚 HNS RoCE 驱动中的内存管理逻辑。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门