【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。 点击这里开始你的技术升级之旅吧
本文分享至飞腾开发者平台《飞腾平台perf工具PMU事件集成指南》
1 软件介绍
perf是内置于Linux-2.6+内核源码中的性能剖析工具。通过对各类性能事件的计数统计,以及在事件发生时对运行代码路径(调用栈)等进行采样记录,支持查找性能瓶颈、定位热点代码。perf支持的性能事件包括:硬件事件、软件事件、跟踪事件。其中,硬件事件由处理器实现的PMU(Performance Monitor Unit,性能监视单元)产生,探测各类与架构、微架构等相关性能事件发生的次数,例如cache-misses、cpu-cycles、instructions、branch-misses等。关于perf的更多信息可阅读参考文献【2】、【3】,关于PMU的更多信息可阅读参考文献【1】。
如下表perf list查看事件名称所示,perf为常用的硬件事件提供了符号名称(又称“事件别名“”),可以通过“-e 事件名称”的方式指定进行统计或采用的事件。对于各厂商实现的未提供符号名称的硬件事件,可以通过原始硬件事件编号“rNNN”的方式进行指定,但是使用起来不够直观和便捷。
List of pre-defined events (to be used in -e):
branch-misses [Hardware event]
bus-cycles [Hardware event]
cache-misses [Hardware event]
...
L1-dcache-load-misses [Hardware cache event]
L1-dcache-loads [Hardware cache event]
L1-icache-load-misses [Hardware cache event]
...
br_mis_pred OR armv8_pmuv3_0/br_mis_pred/ [Kernel PMU event]
br_pred OR armv8_pmuv3_0/br_pred/ [Kernel PMU event]
bus_access OR armv8_pmuv3_0/bus_access/ [Kernel PMU event]
...
rNNN [Raw hardware event descriptor]
cpu/t1=v1[,t2=v2,t3 ...]/modifier [Raw hardware event descriptor]
本文档以飞腾FTC6xx系列核心实现的硬件事件为例,说明如何在Linux内核上为飞腾PMU硬件事件建立perf符号名称、实现自定义硬件事件集成的方法。
2 环境要求
2.1 硬件环境
硬件环境要求如下表硬件环境所示。
项目 | 说明 |
---|---|
CPU | FTC66X系列核心(FT-2000/4、FT-2000+/64) |