google-perftools工具介绍

赵驰
2023-12-01

  最近使用了一下google-tools工具集,该工具集可以使用来查找对应的程序的性能以及内存问题,对于工具集的介绍 ,大家可以百度查找,本篇主要还介绍该工具集的安装和使用;
 首先我们上官网上下载gperftools-xxx.tar.gz源码包和libunwind-xxx.tar.gz源码包(gperftools是工具集,集成内存检测和性能检测工具,libunwind是堆栈采集的库,gperftools采用优化编译的情况下会依赖于它)。

工具安装:

  1. 编译安装libunwind
     a)解压该压缩包,执行./configure 脚本,该命令可以加相关的参数,建议不加参数,直接在当前目录下使用默认参数进行编译安装;
     b)执行make命令进行编译,在编译完成后,执行make install命令,进行安装;安装完成后,在/usr/local/lib目录下查看是否有该库;
    执行完以上步骤后,libunwind库已经成功的安装。
  2. 编译安装gperftools工具
     a)解压该源码压缩包,执行./configure 脚本,该脚本也接受相关的参数;如果要使用非优化编译则需要添加 --enable-frame-pointers 参数(推荐使用非优化编译版本);
     b)脚本执行完成后会生成Makefile文件,执行make命令对工具进行编译;编译完成后执行make install命令对工具进行安装,安装完成后再/usr/local/lib目录下可以看到有libtcmalloc.so等动态库;
  3. 完成以上步骤后,我们需要修改相关的泪痣文件,以让系统能够加载到这些动态库
     我们需要修改/etc/ld.so.conf配置文件,在配置文件中增加/usr/local/lib路径,然后保存。在保存完成后执行ldconfig命令,让系统加载配置文件,以便让系统能够加载到动态库;

    至此,我们的gperftools工具已经成功安装。

工具使用

 工具的使用有多中方式,可以配置环境变量,也可以修改源代码,我们介绍使用环境变量的方式

 1. 程序编译:
  由于我使用的是gperftools工具非优化安装的版本,所以,在编译我们的程序的时候,需要在上 -fno-omit-frame-pointer 选项,该选项放在编译的 -g 选项后面,直接编译即可;

 2. 我们在运行程序前需要设置相关的环境变量,以告诉程序需要对性能进行采样:
  LD_PRELOAD=/usr/local/lib/libtcmalloc_and_profiler.so 环境变量用来设置我们需要加的动态库,设置了该变量后,程序的内存不再是使用系统提供的分配函数,而是使用该库提供的方法;
  CPUPROFILE=/tmp/perf.prof 该配置项是用来设置生成的文件的名称以及存储的路径的。
  CPUPROFILESIGNAL=12 该变量用来设置采样开始和结束的信号,当接第一次收到该信号后,开始采样,再次收到信号后,结束采样,每次必须要有开始和结束信号,否则将不会生成采样数据。

3. 分析数据生成
   我们生成了采样数据后,需要将采样数据转变成可视化的可阅读的数据,可以选择转换成txt文档,pdf文档以及火焰图等,我们这边选择生成pdf文档
   生成命令为:pprof --pdf --lines ./进程名称 perf.prof.0 > cascade.pdf 该命令中 --pdf 表示生成pdf文档,也可以是其他的文档,–lines表示具体到某一行,生成的pdf文档中,会显示到具体的文件的行数;
  生成的pdf图中会像是具体的想能消耗的百分比,我们可以参照源码分析具体性能消耗瓶颈,然后有针对的修改

 类似资料: