[转]perf + 火焰图分析程序性能

1、perf命令简要介绍

性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果;

perf record

perf report

举例:

sudo perf record -e cpu-clock -g -p 2548

-g 选项是告诉perf record额外记录函数的调用关系

-e cpu-clock 指perf record监控的指标为cpu周期

-p 指定需要record的进程pid

程序运行完之后,perf record会生成一个名为perf.data的文件,如果之前已有,那么之前的perf.data文件会被覆盖

获得这个perf.data文件之后,就需要perf report工具进行查看

perf report -i perf.data

-i 指定要查看的文件

以诊断mysql为例,report结果:

$sudo perf report  -i perf.data

这种格式很不直观

 2、使用火焰图展示结果

1、Flame Graph项目位于GitHub上:https://github.com/brendangregg/FlameGraph

2、可以用git将其clone下来:git clone https://github.com/brendangregg/FlameGraph.git

我们以perf为例,看一下flamegraph的使用方法:

1、第一步

$sudo perf record -e cpu-clock -g -p 28591

Ctrl+c结束执行后,在当前目录下会生成采样数据perf.data.

2、第二步

用perf script工具对perf.data进行解析

perf script -i perf.data &> perf.unfold

3、第三步

将perf.unfold中的符号进行折叠:

#./stackcollapse-perf.pl perf.unfold &> perf.folded

4、最后生成svg图:

./flamegraph.pl perf.folded > perf.svg

分类: Linux

原文地址:https://www.cnblogs.com/wlzy/p/9787447.html

时间: 2024-11-10 22:23:49

[转]perf + 火焰图分析程序性能的相关文章

perf + 火焰图分析程序性能

1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果: perf record perf report 举例: sudo perf record -e cpu-clock -g -p 2548 -g 选项是告诉perf record额外记录函数的调用关系 -e cpu-clock 指perf record监控的指标为cpu周期 -p 指定需要reco

perf + Flame Graph火焰图分析程序性能

1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果: usage: perf [--version] [--help] [OPTIONS] COMMAND [ARGS] The most commonly used perf commands are: annotate Read perf.data (created by perf record)

火焰图分析openresty性能瓶颈

注:本文操作基于CentOS 系统 准备工作 用wget从https://sourceware.org/systemtap/ftp/releases/下载最新版的systemtap.tar.gz压缩包,然后解压../configure; make; make install 安装到目标主机:执行命令 stap -ve 'probe begin { log("hello systemtap!") exit() }' 如果提示pass 5: run completed ... 就表示安装成

google perftools分析程序性能

Google perftools 1.功能简介 它的主要功能就是通过采样的方式,给程序中cpu的使用情况进行“画像”,通过它所输出的结果,我们可以对程序中各个函数(得到函数之间的调用关系)耗时情况一目了然.在对程序做性能优化的时候,这个是很重要的,先把最耗时的若干个操作优化好,程序的整体性能提升应该十分明显,这也是做性能优化的一个最为基本的原则—先优化最耗时的. 2.安装 1.下载gperftools Wget https://code.google.com/p/gperftools/downl

perf+火焰图使用

使用 # 安装perf yum install perf -y # 下载绘图工具 git clone https://github.com/brendangregg/FlameGraph.git # 采集数据 perf record -F99-p3887-g -- sleep 30 # 生成火焰图 perf script -i perf.data &> perf.unfold ./FlameGraph/stackcollapse-perf.pl perf.unfold &> p

如何使用strace+pstack利器分析程序性能

引言 有时我们需要对程序进行优化.减少程序响应时间.除了一段段地对代码进行时间复杂度分析,我们还有更便捷的方法吗? 若能直接找到影响程序运行时间的函数调用,再有针对地对相关函数进行代码分析和优化,那相比漫无目的地看代码,效率就高多了. 将strace和pstack工具结合起来使用,就可以达到以上目的.strace跟踪程序使用的底层系统调用,可输出系统调用被执行的时间点以及各个调用耗时:pstack工具对指定PID的进程输出函数调用栈. 下面我们通过一个简单的消息收发程序,说明使用strace.p

nodejs 应用火焰图简单分析

以前有写过一个使用speedscope 的简单说明,以下是一个使用另外一个工具进行火焰图分析的简单说明 环境准备 项目结构 ├── app.js ├── package.json └── yarn.lock 代码说明 app.js //app.js const express = require('express'); const console = require('console'); const levenshtein = require('fast-levenshtein'); var

Linux程序性能分析和火焰图

Linux程序性能分析和火焰图 Linux程序的性能分析工具数量比较多,涉及到整个操作系统的方方面面,可能是开源的原因吧,相对于Windows来说丰富太多.其中应用分析性能方面Dtrace, SystemTap, Perf_events应该算是这方面的集大成者.Dtrace目前只在较高的内核版本有支持,记得是4.8以后, SystemTap则是需要在Red Hat的官方网站下载OS版本对应的调试符号和对应的调试版本内核,配置起来需要花费一定的时间,只有Perf_events使用起来比较方面,但是

使用linux perf工具生成java程序火焰图

pre.cjk { font-family: "Nimbus Mono L", monospace } p { margin-bottom: 0.1in; line-height: 120% } a:link { } 重要参考文献:www.brendangregg.com/blog/2017-06-30/package-flame-graph.html Java FlameGraph(火焰图)能够非常直观的展示java程序的性能分析结果,方便发现程序热点和进一步调优.本文将展示如何使用