linux下搭建gperftools工具分析程序瓶颈

1. 先安装 unwind

//使用root
wget https://github.com/libunwind/libunwind/archive/v0.99.tar.gz  
tar -xvf v0.99.tar.gz  
cd libunwind-0.99  
autoreconf --force -v --install  
./configure
make   
sudo make install

2. 安装gperftools

wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.6.1/gperftools-2.6.1.tar.gz

autoreconf -i
./configure
make
sudo make install

以上都ok后,依赖库就好了。 到/usr/local/lib下找一下库有没有。

3. 代码里封装gperftools入口

#include "gperftools/profiler.h"
#include "gperftools/heap-profiler.h"

void gperfCpuStart()
{
#ifdef OPEN_PROFILE
        UtilFile::makeDirectoryRecursive("perf");
        ProfilerStart("perf/cpu.perf");
#endif
};

void gperfCpuStop()
{
#ifdef OPEN_PROFILE
        ProfilerStop();
#endif
};

void gperfCpuFlush()
{
#ifdef OPEN_PROFILE
        ProfilerFlush();
#endif
};

在外部添加一个开关调用上述方法,目的就是可以随时开随时关,方便监控一段时间内的性能。

4. 修改CMake

ADD_LIBRARY(tcmalloc_and_profiler STATIC IMPORTED)
SET_TARGET_PROPERTIES(tcmalloc_and_profiler PROPERTIES IMPORTED_LOCATION /usr/local/lib/libtcmalloc_and_profiler.so)

ADD_LIBRARY(unwind STATIC IMPORTED)
SET_TARGET_PROPERTIES(unwind PROPERTIES IMPORTED_LOCATION /usr/lib64/libunwind.so)

TARGET_LINK_LIBRARIES(Server tcmalloc_and_profiler unwind lzma redis util zlib ss

差不多类似这样,具体情况按照具体的修改。

  • 随后编译程序,在合适的地方开启性能监测,合适的地方再关闭性能检测
  • 关闭后,在程序运行目录下能找到cpu.perf文件

5. 生成可视化文件

pprof --callgrind Server cpu.perf > callgrind.perf.cpu

几分钟后生成callgrind.perf.cpu文件

6. 在window下装个可视化工具

KCachegrind这个挺难找的,直接搜:QCachegrind这个。
用可视化工具打开就能看到了函数调用情况。linux下搭建gperftools工具分析程序瓶颈_第1张图片

你可能感兴趣的:(随笔,linux,运维,服务器)