gperftools使用说明

原文章:使用gperftool + libuwind + graphviz来分析程序性能

为了了解程序的执行时间以及各个函数之间的调用关系,可以通过Google的gperftool来统计函数之间的关系以及时间信息。通过分析每个函数的时间信息,就可以看程序的关键消耗点在什么地方。

1. 安装

gperftools:http://code.google.com/p/gperftools/downloads/list

libunwind:http://download.savannah.gnu.org/releases/libunwind/

64位操作系统需要安装libunwind,官方推荐版本是libunwind-0.99-beta

安装过程:./configure [--disable-shared] && make && make install

Graphviz是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形,gperftools依靠此工具生成图形分析结果。

安装命令:yum install graphviz

2. 用法

1)在目标文件中加入#include <google/profiler.h>,在程序开始处加入ProfilerStart("my.prof"),在程序结束处加入ProfilerStop().

扫描二维码关注公众号,回复: 4051029 查看本文章

2)在编译连接时,需要链接libprofiler库,64位操作系统同时链接libunwind库。

3)如果是在多线程中,可以采用下面的形式来控制:

#include <google/profiler.h>

static int is_record = 0;

if (is_record == 0) {
     ProfilerStart("my.prof");
}

if (is_record == 0) {

  ProfilerStop();
  is_record = 1;
}

设置好上面的代码后,重新编译完成。直接运行即可。运行完成后就会生成my.prof文件。我在中间件pgoneproxy中增加后直接运行,就可以直接生成my.prof文件。但是在postgersql的psql的源码中增加后运行结束确不能生成。后面再网络上上面找到执行方式:env CPUPROFILE=./my.prof ./psql -h 127.0.0.1 -p 5432 -U db_user pgbench。安装这种执行方式确能够生成文件my.prof文件。

3. 分析输出

pprof脚本用于分析profile文件并输出结果,包括文本和图形两种输出风格。

例如:/urs/local/pgsql/bin/psql是目标程序,my.prof是profile文件

生成文本风格结果:pprof --text /urs/local/pgsql/bin/psql my.prof > profile.txt

生成图形风格结果:pprof --pdf /urs/local/pgsql/bin/psql my.prof > profile.pdf

4. 结果展示

下图是pgoneproxy中生成的pdf格式的结果的部分截图,从图片中可以看到每个函数的调用关系以及每个函数消耗的时间比例。










猜你喜欢

转载自blog.csdn.net/weixin_35390390/article/details/72869534
今日推荐