perf 是Linux的一款性能分析工具,能够进行函数级和指令级的热点查找,可以用来分析程序中热点函数的CPU占用率,从而定位性能瓶颈。
Performance analysis tools for Linux.
系统性能优化通常可以分为两个阶段:性能分析和性能优化。性能分析的目的是查找性能瓶颈、热点代码,分析引发性能问题的原因;基于性能分析,可以进行性能优化,包括:算法优化(空间复杂度和时间复杂度的权衡)和代码优化(提高执行速度、减少内存占用)。
一,原理
Linux性能计数器是一个基于内核的子系统,它提供一个性能分析框架,比如硬件(CPU、PMU(Performance Monitoring Unit))功能和软件(软件计数器、tracepoint)功能。通过perf,应用程序可以利用PMU、tracepoint和内核中的计数器来进行性能统计。
Perf 可以对程序进行函数级别的采样,从而了解程序的性能瓶颈在哪里。其基本原理是:每隔一个固定时间,就是CPU上产生一个中断,看当前是哪个进程、哪个函数,然后给对应的进程和函数加一个统计值,这样就知道CPU有多少时间在某个进程或某个函数上了。
二,安装
https://blog.csdn.net/qq_48201696/article/details/126381924
三,使用
https://www.cnblogs.com/arnoldlu/p/6241297.html
1,top适合监控整个系统的性能
2,stat比较适合单个程序的性能分析
3,record/report更适合对程序进行更细粒度的分析
程序见:https://www.cnblogs.com/arnoldlu/p/6241297.html
#或者直接,查看函数的调用占比
生成的结果必须用网页打开:
#查看当前linux进程占比
perf report -n –stdio
4,火焰图
https://www.cnblogs.com/wx170119/p/11459995.html
按这个步骤来:
https://blog.csdn.net/pwl999/article/details/106786495