楼主

6513发表于 2019-11-28 11:33:09
只看该作者楼主

Linux性能分析工具——Perf [复制链接]

本帖最后由 喵小洁2019-11-28 03:46:00 编辑

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

分析系统/进程的整体性能概况

39a8a255f556d04e3d54_798x260.png@900-0-90-f.png

  • 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


举报
发表于 2019-11-28 11:40:44
只看该作者沙发

学习了,正好可以用到

举报
发表于 2019-11-28 16:43:52
只看该作者板凳

总结的很到位

举报
发表于 2019-11-28 16:44:36
只看该作者地板

转给我的小伙伴

举报

您需要登录后才可以回帖

登录注册
发表回复