You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS多核环境下运行perf报页面映射权限错误的排查求助

解决CentOS 8下perf record内存锁定权限错误

问题分析

报错提示的内存映射权限问题,本质是perf需要锁定内存存储采样数据,但当前系统的内存锁定限制(perf_event_mlock_kb)或用户资源配额不足以支撑采样需求——尤其是开启--call-graph dwarf时,栈信息采样会额外增加内存消耗。

解决方案

1. 临时提升内核内存锁定限制

执行以下命令临时调整perf_event_mlock_kb,数值可根据系统内存调整(建议设为4096或物理内存的1/4以内):

echo 4096 | sudo tee /proc/sys/kernel/perf_event_mlock_kb

2. 永久配置内核内存锁定限制

为避免重启后失效,将配置写入sysctl专用文件:

echo "kernel.perf_event_mlock_kb = 4096" | sudo tee /etc/sysctl.d/99-perf.conf
sudo sysctl -p /etc/sysctl.d/99-perf.conf

3. 合理设置perf的-m参数

不要使用默认的超大值(4294967295),手动指定匹配mlock限制的页数值,比如1024页(对应4MB内存),修改后的命令:

perf record -F 99 -p <pid> -g -o perf.data --call-graph dwarf -m 1024 -- sleep 120

4. 调整用户内存锁定资源配额

先检查当前用户的内存锁定限制:

ulimit -l

如果输出为0或过小,临时调整:

ulimit -l 4096

永久调整需编辑/etc/security/limits.conf,添加(替换<你的用户名>):

<你的用户名> soft memlock 4096
<你的用户名> hard memlock 4096

保存后重新登录用户生效。

已知问题说明

在CentOS 8的4.18.0-193.6.3.el8_2.v1.2.x86_64内核版本中,--call-graph dwarf与多核环境结合时,会显著增加perf的内存需求,容易触发内存锁定限制。同时,默认的-m参数值过大,会导致内核拒绝分配内存页,必须手动指定合理值配合mlock限制调整才能解决。

内容的提问来源于stack exchange,提问作者Chen Ge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:33:29