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

Linux ARM平台perf单独统计用户态/内核态指令、周期数失败如何解决

问题根因

这不是你的操作错误,该问题出在ARM平台Linux 5.4内核的硬件PMU(性能监控单元)适配层面,通用perf事件配置开齐不等于平台专属的PMU特权级过滤功能已启用。

排查&解决思路

  • 补全ARM平台专属PMU内核配置
    你当前列出的都是perf通用功能配置,缺少硬件PMU的核心配置项,需要在编译内核时开启:
    # 32位ARM平台选这个
    CONFIG_ARM_PMU=y
    # 64位AArch64平台选这个
    CONFIG_ARM64_PMU=y
    # 通用硬件perf事件依赖,必须开启
    CONFIG_HW_PERF_EVENTS=y
    # AArch64平台可选,开启用户态PMU访问权限,提升用户态事件统计兼容性
    CONFIG_ARM64_PMU_EL0_ACCESS=y
    
  • 排查硬件能力限制
    部分低端ARM Cortex-A系列(如部分修订版的Cortex-A53、Cortex-A35)或定制化ARM IP的PMU本身不支持特权级独立计数,无法拆分用户态/内核态的硬件事件统计。你可以查阅对应芯片的官方技术参考手册(TRM)的PMU章节,确认是否支持该能力。
  • 排除权限配置问题
    先执行cat /proc/sys/kernel/perf_event_paranoid查看perf权限级别,如果返回值大于2,可先用root权限执行sysctl -w kernel.perf_event_paranoid=0后重试,排除权限限制导致的不支持报错。
  • 升级内核版本
    Linux 5.4对很多新ARM芯片的PMU适配不全,大量PMU特权级过滤的补丁是在5.10及以上LTS版本合入的,条件允许的话可以升级内核版本验证。

临时替代方案

如果硬件确实不支持或暂时无法调整内核配置,可以用采样方式间接统计:用perf record采样全量cycles/instructions事件后,按地址空间过滤用户态/内核态的样本,换算出对应态的计数占比,精度略低于硬件直接计数,但可以满足大部分分析需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:54:02