必须启用内核级perf性能分析模式:1、执行sudo sysctl -w kernel.perf_event_paranoid=0并写入/etc/sysctl.d/99-perf.conf;2、加载perf_event_paranoid模块;3、验证perf --version及perf record/report功能。

如果您在麒麟OS上需要对系统运行状态进行深度性能追踪,比如定位卡顿根源、分析CPU调度延迟或采集内存分配热点,就必须启用内核级性能分析模式,而非仅依赖用户态工具。
启用perf性能分析子系统
perf是Linux内核原生支持的性能事件分析工具,麒麟OS默认已编译进内核但可能被禁用。需确认并激活该功能:
1、打开终端,执行:sudo sysctl -w kernel.perf_event_paranoid=0。
2、该命令将内核性能事件访问权限设为最低限制,允许非root用户采集CPU周期、缓存命中、分支预测等硬件事件。若返回error: permission denied,说明当前用户无sudo权限,必须切换至管理员账户操作。
3、永久生效需写入配置:echo 'kernel.perf_event_paranoid = 0' | sudo tee /etc/sysctl.d/99-perf.conf。
【必须重启或执行sudo sysctl --system才能使配置生效】
加载perf_event_paranoid内核模块
某些麒麟OS定制内核会将perf相关功能编译为可加载模块,而非内置。此时需手动载入:
方法一:临时加载
1、执行:sudo modprobe perf_event_paranoid。
2、验证是否成功:lsmod | grep perf,若输出含perf_event_paranoid即表示模块已就位。
方法二:开机自动加载
1、创建模块配置文件:echo 'perf_event_paranoid' | sudo tee /etc/modules-load.d/perf.conf。
2、该操作确保每次启动时自动载入模块,避免每次手动执行modprobe。
验证perf可用性并采集基础性能数据
完成上述配置后,必须验证perf能否正常采集数据,否则后续分析将无法开展:
第一步:检查perf命令是否存在且可执行
运行perf --version,若返回类似perf version 6.1.0则说明工具链就绪。
第二步:执行一次最小化采样
输入:perf record -e cycles,instructions -a sleep 5,该命令以5秒为窗口采集全系统CPU周期与指令数事件。
第三步:生成分析报告
执行:perf report --no-children,查看函数级热点分布。若报错failed to open event,说明perf_event_paranoid值未生效或模块未加载。
这一步操作起来很简单,直接把命令复制粘贴进终端回车就行,但必须确保前两步全部完成,否则report会空转无输出。











