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这个。
用可视化工具打开就能看到了函数调用情况。