当前位置: 首页 > 工具软件 > Perf-Tools > 使用案例 >

perf性能分析工具

东门城
2023-12-01

        perf是performance的简称,最常用的性能分析工具。一款随linux内核代码一同发布和维护的性能诊断工具。linux内核2.6.31加入performance Counter, 内核2.6.32改为performance Event。

        跟随linux内核发布的perf是一个基于内核的子系统,它提供一个性能分析框架。其利用硬件(CPU、PMU(Performance Monitoring Unit))功能和软件(软件计数器、tracepoint)功能来进行性能统计。

        Perf 可以对程序进行函数级别的采样,从而了解程序的性能瓶颈在哪里。其基本原理是:每隔一个固定时间,就是CPU上产生一个中断,看当前是哪个进程、哪个函数,然后给对应的进程和函数加一个统计值,这样就知道CPU有多少时间在某个进程或某个函数上了。使用 Perf 可以计算每个时钟周期内的指令数,称为 IPC。可以获取耗时的TOP函数等。

软件计数器

其中软件计数器能保存进程切换、tick数等数据。通过tick数,可以获取top函数,制作火焰图等。

PMU

Performance Monitor Unit,性能监视单元,其是CPU提供的一个单元,属于硬件的范畴。通过访问相关的寄存器能读取到CPU的一些性能数据,目前大部分CPU都会提供相应的PMU。PMU硬件产生的事件,比如cache命中。

tracepoints

tracepoints是散落在内核源码中的一些hook,它们可以在特定的代码被执行到时触发,这一特性可以被各种trace/debug工具所使用。比如保存内存分配的次数。perf将tracepoint产生的时间记录下来,生成报告,通过分析这些报告,调优人员便可以了解程序运行期间内核的各种细节,对性能症状做出准确的诊断。

这些tracepint的对应的sysfs节点在/sys/kernel/debug/tracing/events目录下。

 类似资料: