`
小滔哥
  • 浏览: 59397 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

google-perf-tools使用笔记

 
阅读更多
  • 1.Perftools 介绍

    项目地址 http://code.google.com/p/gperftools/

      引用原文里的一段英文介绍

      Perftools is a collection of a high-performance multi-threaded malloc() implementation, plus some pretty nifty performance analysis tools.

      Perftools 是一个高效的多线程 malloc 实现,附加一些很好的性能分析工具。使用这个工具进行分析 cpu profiling memory leak 分析是很不错的。

 

 

  • 2.Perftools 下载、安装

    下载地址 http://code.google.com/p/gperftools/downloads/list ,从这里面选择一个版本,下载后解压,然后进行安装。安装步骤如下

./configure –enable-frame-pointers
Make
Make install

    不出问题的话,上面就可以完成安装了,如有问题,看下 INSTALL,README 文档进行解决。

 

 

  • 3.Perftools使用方法

    使用方法有两种

    第一种 设置 LD_PRELOAD

          假设要分析的执行文件为 run.out

          Export LD_PRELOAD=/usr/local/lib/libprofiler.so:/usr/local/lib/libtcmalloc.so

          其中第一个库是做 cpu profiling 需要的库,第二个是对 memory profiling 需要的库

          然后执行 CPUPROFILE=/tmp/prof.out HEAPCHECK=strict /path/to/run.out

          便会在 /tmp/ 目录下生成 prof.out /tmp/run.out.xxxend.heap. 这样的文件

 

    第二种在编译的时候添加 -lprofiler –ltcmalloc 选项

          例如 gcc –o run.so test.c –lprofiler –ltcmalloc ,这样生成的 run.out 在运行的时候也能得到 profling 的结果文件

          CPUPROFILE=/tmp/prof.out HEAPCHECK=strict /path/to/run.out

          同样会在 /tmp 目录下生成第一种方法那样的两个文件

 

 

  • 4.分析结果

      使用 pprof profiling 的结果文件进行分析

      对 cpu profiling 的结果文件执行下面的命令

      pprof --text ./a.out /tmp/prof.out

      会得到类似下面的输出,从中可以看到各个函数执行时间的比例

Using local file ./a.out.

Using local file /tmp/prof.out.

Removing killpg from all stack traces.

Total: 2255 samples

    1677  74.4%  74.4%     1677  74.4% consumeSomeCPUTime1

     578  25.6% 100.0%     1131  50.2% consumeSomeCPUTime2

       0   0.0% 100.0%     2255 100.0% __libc_start_main

       0   0.0% 100.0%     2255 100.0% main

       0   0.0% 100.0%     2255 100.0% stupidComputing 
 

      每一列的含义如下所示

      1.Number of profiling samples in this function

      2.Percentage of profiling samples in this function

      3.Percentage of profiling samples in the functions printed so far

      4.Number of profiling samples in this function and its callees

      5.Percentage of profiling samples in this function and its callees

      6.Function name

 

      对 memory   profiling 的结果文件执行下面的命令

      pprof --text ./run.out /tmp/run.out.29318._main_-end.heap

      会得到类似下面的输出,给出了 memory leak 产生的函数及所占比例

Total: 0.0 MB

     0.0  66.7%  66.7%      0.0  66.7% b

     0.0  33.3% 100.0%      0.0  33.3% a

     0.0   0.0% 100.0%      0.0 100.0% __libc_start_main

     0.0   0.0% 100.0%      0.0 100.0% main 

      每一列的含义同上面类似,将 leak 的比例函数执行时间的比例即可。

      当然,还可以选择其他的生成方式,例如将--text换成--pdf,--gv等这样的,生成pdf和图片方式。

 

 

    • 5.总结

             Perftools 是个很不错的工具,对无论性能分析,还是对内存进行分析,都能给开发者提供很好的解决问题思路。而且工具是开源的,如果需要加一些什么功能或者修复什么 bug ,也是比较方便的,我们这边有同学就加了一点功能。以后把这个工具用起来,再慢慢谈使用这个工具的一些经验吧。

      分享到:
      评论

      相关推荐

        google-perftools下载

        《Google Perftools:优化Nginx的利器》 在当今的互联网环境中,服务器性能的优化至关重要,尤其是在处理高并发请求的Web服务器...对于任何希望优化Nginx性能的开发者来说,掌握Google Perftools的使用是至关重要的。

        google-perftools 源码 (一款针对 C/C++ 程序的性能分析工具)

        google-perftools 简介 google-perftools 是一款针对 C/C++ 程序的性能分析工具,它...本文介绍了一个 Linux 平台上的性能剖析工具 google-perftools,并结合实例向读者展示了如何使用该工具配置、使用及分析性能瓶颈。

        谷歌的google-perftools-1.7.zip

        在使用`google-perftools`时,你需要先将其编译并安装到系统中。编译过程通常包括配置、编译和安装三个步骤。在Linux环境下,可以使用`./configure`,`make`和`sudo make install`命令来完成。安装后,你可以通过`...

        google-perftools-1.8.2.tar.gz

        `google-perftools-1.8.2.tar.gz`是该工具的一个特定版本,打包成tar.gz格式供用户下载使用。 一、主要组件 `google-perftools`包含两个主要组件:`tcmalloc`和`pprof`。 1. `tcmalloc`(Thread-Caching Malloc)...

        google-perftools-1.6.tar.gz

        在Linux环境下,可以使用包管理器或者源码编译的方式安装google-perftools-1.6。配置时,确保链接了必要的库,并在编译目标程序时启用gperftools的支持。 3. **pprof的使用** - **CPU Profiling**:运行程序时...

        google-perftools-1.8.3-1.el6.x86_64.rpm

        google-perftools-1.8.3-1.el6.x86_64.rpm

        google-perftools.rar

        在实际项目中,使用Google Perftools和tcmalloc可以显著提升内存管理的效率,降低内存消耗。安装gperftools-2.7.tar.gz文件,可以按照以下步骤操作: 1. 解压文件:`tar -zxvf gperftools-2.7.tar.gz` 2. 进入解压...

        devtoolset-10-perftools-10.0-0.el7.x86_64.rpm

        离线安装包,亲测可用

        python-perf-3.10.0-1160.6.1.el7.x86_64.rpm

        官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

        使用google-perftools优化nginx在高并发时的性能的教程(完整版)

        标题中的“使用google-perftools优化nginx在高并发时的性能的教程(完整版)”指的是一个详细的指南,旨在教导读者如何利用Google的性能分析工具google-perftools来增强Nginx在处理高并发请求时的性能。这个过程涉及到...

        rabbitmq-perf-test-2.7.0-bin.tar.gz

        "rabbitmq-perf-test-2.7.0-bin.tar.gz" 是一个针对RabbitMQ性能测试的工具包,版本为2.7.0,用户可以直接下载并解压使用,无需进行复杂的安装过程。 该工具的主要功能是对RabbitMQ服务器进行性能测试,评估其在高...

        spark-perf

        【Spark-Perf:Spark流处理性能基准测试】 Spark-Perf是一个专注于评估Apache Spark流处理(Spark Streaming)性能的工具。它为开发者、研究人员和系统管理员提供了基准测试的框架,帮助他们理解Spark Streaming在...

        python-perf-3.10.0-1160.2.1.el7.centos.plus.x86_64.rpm

        python-perf-3.10.0-1160.2.1.el7.centos.plus.x86_64

        python-perf-3.10.0-1160.el7.centos.plus.x86_64.rpm

        python-perf-3.10.0-1160.el7.centos.plus.x86_64

        google-perftools-开源

        在文件列表中,"google-perftools-0.8"可能表示的是该工具的一个特定版本,包含了编译后的库文件、头文件以及相关的文档和示例。用户可以通过这些文件在自己的项目中集成和使用Google Perftools,或者对其进行编译以...

        python-perf-3.10.0-1160.119.1.el7.x64-86.rpm.tar.gz

        虽然本文没有列出readme.md的具体内容,但通常该文件会详细说明如何安装和配置python-perf工具,以及如何开始使用它进行性能分析。 python-perf-3.10.0-1160.119.1.el7.x64-86.rpm.tar.gz是一个包含了性能分析工具...

        python-perf-3.10.0-1160.41.1.el7.x86_64.rpm

        官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

        python-perf-3.10.0-1160.36.2.el7.centos.plus.x86_64.rpm

        python-perf-3.10.0-1160.36.2.el7.centos.plus.x86_64

        gcc-toolset-11-perftools-11.0-1.el8.aarch64.rpm

        离线安装包,亲测可用

      Global site tag (gtag.js) - Google Analytics