请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】
文章目录
概述
PMU(Performance Monitor Unit)本来指的就是硬件上的性能监控计数器(counter)。
因为软件 trace 方法存在制约制约:
- 软件大部分是插桩法,对于没有插桩的地方缺乏监控;
- 软件使用 hrtimer 的采样法开销较大,而且不精确。所以使用硬件采样来trace是一个很好的补充。
Arm64 的 Hardware PMU 可以监控许多种事件:
- cpu-cycles
- instructions
- cache-references
- cache-misses
- branch-misses
- cache相关事件等等。
它的监控原理比较简单:每个CPU有几个 counter,Counter0 固定只能配置成 cpu-cycles,其他 counter 可以配置成支持的任意类型。当 counter 的计数达到我们配置的值后,产生中断,在中断中记录ELR/