perf研究总结
最近在天数搞一个性能的工具,需要抓callstack 包括用户态和内核的太调用栈,那么就顺便研究了一下perf工具。做了一个简单的总结。
perf --help
显示具体的命令,每个命令如何使用,再perf cmd --help会显示

参考链接
ubuntu安装perf工具
Ubuntu:apt install linux-tools-common
perf 原理
Perf通过系统调用sys_perf_event_open 陷入到内核中,内核根据perf 提供的信息在PMU(Performance Monitoring Unit)上初始化一个硬件性能计数器(PMC: Performance Monitoring Counter)。PMC随着指定硬件事件的发生而自动累加。在PMC 溢出时,PMU 触发一个PMI(Performance Monitoring Interrupt)中断。内核在PMI 中断的处理函数中保存PMC 的计数值,触发中断时的指令地址,当前时间戳以及当前进程的PID,TID,comm 等信息。我们把这些信息统称为一个采样(sample)。内核会将收集到的sample 放入用于跟用户空间通信的Ring Buffe

本文介绍了perf工具的使用,包括查看性能事件、实时性能统计和记录分析。perf通过内核的性能监测单元(PMU)收集硬件事件,如CPU周期、分支指令等,并支持用户态、内核态和hypervisor态的事件统计。通过采样模式,perf可以捕获调用栈信息,用于性能瓶颈定位。常用命令如perf list、perf stat、perf top和perf record与perf report,可用于实时监控、性能概览和事后分析。此外,文章还讨论了性能事件的精度级别和不同属性,以及perf报告中的开销计算。

6363

被折叠的 条评论
为什么被折叠?



