ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

122、RDMA故障排查:内存注册错误与权限问题

122、RDMA故障排查:内存注册错误与权限问题

一、凌晨三点的panic

上周五晚上,产线那边又炸了。客户反馈说RDMA写操作偶尔返回-12(ENOMEM),但内存明明还剩一大半。我远程连上去一看,ibv_reg_mr返回了NULL,errno是EACCES。权限问题?root跑的进程,哪来的权限问题?

翻出dmesg,看到一行关键日志:

mlx5_0: registered mr 0x7f1234000000 failed: permission denied

这就很有意思了。RDMA内存注册失败,权限拒绝,但进程是root。后来查了半天,发现是HugePages的权限配置问题——进程虽然root,但HugePages文件系统的挂载点权限没开对。这种坑,不踩一次根本想不到。

二、内存注册失败的常见面孔

2.1 物理内存锁限制(RLIMIT_MEMLOCK)

这是最经典的坑。RDMA注册内存时,内核要把这块物理内存锁住,防止被换出。但系统对每个进程能锁住的内存大小有限制。

// 别这样写——不检查ulimitstructibv_mr*mr
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进