perf工具学习笔记

141 阅读2分钟

perf使用场景

perf工具可以监控性能监控单元(PMU),记录和监控各种硬件和软件事件,各种trace点,kprobes和uprobes。

常见perf命令

  • perf stat
  • perf record
  • perf report
  • perf list
  • perf top
  • perf trace
  • perf help

perf top

类似于linux系统中的top命令,按照占用cpu时间的比例进行排序,

perf stat

记录进程执行期间的硬件和软件事件,若未指定事件,perf stat会计算一组通用的硬件和软件事件。

 Performance counter stats for 'ls':

              1.79 msec task-clock                       #    0.148 CPUs utilized
                 2      context-switches                 #    1.117 K/sec
                 0      cpu-migrations                   #    0.000 /sec
               101      page-faults                      #   56.403 K/sec
         3,665,660      cycles                           #    2.047 GHz                         (76.65%)
         3,185,754      instructions                     #    0.87  insn per cycle
           585,038      branches                         #  326.711 M/sec
            22,134      branch-misses                    #    3.78% of all branches             (23.35%)

       0.012092252 seconds time elapsed

       0.002810000 seconds user
       0.000000000 seconds sys

perf record

perf record --call-graph method command

method可选: fp:使用帧指针方法。 dwarf:使用DWARF Call Frame信息来unwind堆栈。 lbr:使用intel处理器上最后分支记录硬件。

perf report

火焰图

火焰图看起来就像跳动的火焰, 横轴表示采样数和采样比例:一个函数占用的横轴越宽,就代表它的执行时间越长,同一层的多个函数,则是按照字母来排序。 纵轴表示调用栈:由下向上根据调用关系逐个展开。

火焰图的分类

  • on-CPU火焰图:表示CPU的繁忙程度,用在CPU使用率比较高的场景中。
  • off-CPU火焰图:表示CPU等待I/O,锁等各种资源的阻塞情况。
  • 内存火焰图:表示内存的分配和释放情况。
  • 热/冷火焰图:表示将on-CPU和off-CPU结合在一起综合展示。
  • 差分火焰图:表示两个火焰图的差分情况,红色表示增长,蓝色表示衰减。