一、凌晨三点的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
阅读完成 · 觉得有帮助?