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

Odroid XU4上Perf工具cache-references/cache-misses不支持问题求助

Odroid XU4上perf无法统计cache事件的原因及解决办法

为啥会出现这个问题?

  • 硬件本身的限制:Odroid XU4用的是Exynos 5422处理器,属于Cortex-A15+A7的big.LITTLE架构,它的PMU(性能监控单元)对cache-references、cache-misses这类事件的支持不完善。perf list能显示这些事件名只是工具层面的兼容,但硬件底层根本没有对应的计数寄存器,自然拿不到数据。
  • 内核配置没跟上:如果你的Ubuntu内核没开启CONFIG_ARM_PMU或者CONFIG_PERF_EVENTS这类关键配置,也会导致perf没法调用硬件PMU来统计事件。另外旧版本内核对Exynos 5422的PMU支持也可能不到位。
  • perf和内核版本不匹配:要是perf工具的版本和当前内核版本差太多,也会出现“列表能看到但用不了”的情况。

能怎么解决?

  • 用ARM原生的原始事件替代:ARM架构有自己的原始PMU事件代码,可以绕开通用的cache事件名。比如:
    • 指令cache缺失用r01
    • 数据cache缺失用r03
      先跑perf list raw看所有可用的原始事件,然后用perf stat -e r01,r03 ./hello_test来统计,效果和cache-misses类似。
  • 升级内核和perf:把系统和工具都更到最新版本,新版本内核对Exynos 5422的PMU支持可能更好。执行下面的命令:
    sudo apt update && sudo apt upgrade linux-image-$(uname -r) linux-tools-$(uname -r)
    
  • 检查内核配置:先确认内核有没有开PMU相关配置,跑zcat /proc/config.gz | grep CONFIG_ARM_PMU,如果输出是CONFIG_ARM_PMU=y就没问题;如果没开启,得重新编译内核并打开这个选项(编译内核有难度,新手慎试)。
  • 换其他工具试试:要是perf的cache事件确实用不了,还可以用oprofile做硬件采样分析,或者用valgrind --tool=cachegrind模拟cache行为(注意cachegrind是模拟,速度慢,适合小体量程序)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:36:22