💡
原文中文,约10700字,阅读约需26分钟。
📝
内容提要
本文探讨了Linux中的性能分析工具Perf及其硬件性能计数器(PMU)原理,特别是ARM架构的实现。PMU通过配置性能计数器监测硬件事件,并支持用户态直接读取计数器。文章还介绍了内核驱动如何管理这些计数器,以及Perf子系统如何处理用户请求。此外,讨论了虚拟化环境下的性能计数器管理及Intel与ARM平台的不同跟踪机制。
🎯
关键要点
- PMU(性能监控单元)通过配置性能计数器监测硬件事件,并支持用户态直接读取计数器。
- ARM架构的性能计数器包括Cycle计数器和最多31个通用性能计数器,能够记录不同的硬件事件。
- Linux内核通过arm_pmuv3.c驱动管理ARM性能计数器,涉及性能计数器的分配、配置和启用。
- Perf子系统负责处理用户请求,内核驱动通过注册结构体pmu与Perf子系统交互。
- 在虚拟化环境中,宿主机和虚拟机之间的性能计数器管理需要确保安全性,LoongArch KVM支持性能计数器的虚拟化。
- Intel平台的性能分析工具包括Intel PT、LBR、BTS和PEBS,分别用于跟踪指令流、记录最近的控制流转移和进行事件驱动的采样。
- ARM平台的BRBE和SPE提供了类似的功能,BRBE记录跳转分支信息,SPE则通过硬件采样提供微架构信息。
- AMU(活动监控单元)用于观察系统整体状态,主要用于内核调度器以估计CPU的平均频率。
❓
延伸问答
什么是PMU,它的作用是什么?
PMU(性能监控单元)通过配置性能计数器监测硬件事件,并支持用户态直接读取计数器。
ARM架构的性能计数器有哪些类型?
ARM架构的性能计数器包括Cycle计数器和最多31个通用性能计数器,能够记录不同的硬件事件。
Linux内核如何管理ARM性能计数器?
Linux内核通过arm_pmuv3.c驱动管理ARM性能计数器,涉及性能计数器的分配、配置和启用。
Perf子系统在性能分析中扮演什么角色?
Perf子系统负责处理用户请求,内核驱动通过注册结构体pmu与Perf子系统交互。
虚拟化环境下如何管理性能计数器?
在虚拟化环境中,宿主机和虚拟机之间的性能计数器管理需要确保安全性,LoongArch KVM支持性能计数器的虚拟化。
Intel平台的性能分析工具有哪些?
Intel平台的性能分析工具包括Intel PT、LBR、BTS和PEBS,分别用于跟踪指令流、记录最近的控制流转移和进行事件驱动的采样。
➡️