Linux性能分析工具——Perf
perf的原理是这样的:每隔一个固定的时间,就在CPU上(每个核上都有)产生一个中断,在中断上看看,当前是哪个pid,哪个函数,然后给对应的pid和函数加一个统计值
命令参数
-e:指定性能事件
-a:显示所有CPU上的性能统计信息
-C:显示指定CPU上的性能统计信息
-p:指定进程PID
-t:指定线程TID
使用案例
perf list
列出所有能够触发perf采样点的事件
software event
Hardware event
Hardware cache event
Kernel PMU event
Tracepoint event
SDT event
perf stat
分析系统/进程的整体性能概况
Task‐clock: 任务真正占用处理器的时间,毫秒
context-switches:系统上下文切换的次数
CPU-migrations:任务从一个处理器迁往另外一个处理器的次数
page-faults:内核发生缺页的次数
cycles:程序消耗的处理器周期数
instructions:指命令执行期间产生的处理器指令数
branches:执行期间遇到的分支指令数
branch‐misses:预测错误的分支指令数
perf top
实时显示系统/进程的性能统计信息
-K:隐藏内核统计信息
-U:隐藏用户空间的统计信息
perf record
记录一段时间内系统/进程的性能时间
-c:事件的采样周期
-o:指定输出文件,默认为perf.data
-g:记录函数间的调用关系
-F <数值>:指定采样频率
sleep:指定采样时长(秒)
perf report
读取perf record生成的数据文件,并显示分析数据
绘制火焰图
绘制火焰图的工程 FlameGraph 使用方法:
$ perf record -F 99 -a -g sleep 60$ perf script > out.perf$ ./stackcollapse-perf.pl out.perf > out.folded$ ./flamegraph.pl out.folded > kernel.svg






































苏公安网备 32011402010933号