gperftools使用

使用 gperftools 检测内存泄露 gperftools 是 google 开源的一组套件,提供了高性能的、支持多线程的 malloc 实现,以及一组优秀的性能分析工具。 阅读详情

简介

使用gperftools统计相关

准备

安装

性能监控工具gperftools-2.9.1,发布时间是2021-03-03。

tar xvf gperftools-2.9.1.tar.gz
cd gperftools-2.9.1
./configure
make -j8
sudo make install

64bit需要这个库的支持libunwind-1.5.0.tar.gz,发布时间2020-11-11。

tar xvf libunwind-1.5.0.tar.gz
cd libunwind-1.5.0
./configure
make -j8
sudo make install

需要安装软件graphviz、gv。

CPU分析需要了解的知识

CPU占用分析工具工作时,将会通过探针程序产生一个.prof二进制文件。这种文件格式说明信息可以查看这份文档

引入library库到应用中

可以在编译过程中直接使用-lprofiler,将监控库连接到我们的executable程序中。还有一种方式通过修改环境变量LD_PRELOAD引入到其中。LD_PRELOAD="/usr/lib/libprofiler.so" <binary>。

running the code

有几种方式能真实开启CPU profiling。

  1. 通过定义环境变量将某个exe文件执行过程的效果输出到prof文件中;
env CPUPROFILE=ls.prof /bin/ls
  1. 通过环境变量将开启或者关闭性能监控;
env CPUPROFILE=chrome.prof CPUPROFILESIGNAL=12 /bin/chrome &
# 第一次执行的时候开启
# 后面执行一次关闭
killall -12 chrome
  1. 在代码里面ProfilerStart()函数(通过参数能指定输出内容)开启记录,ProfilerStop()函数结束。

可以通过阅读gperftools/profiler.h获取高级函数,包括ProfilerFlush()和ProfilerStartWithOptions()。

修改运行时行为。

你能通过修改环境变量参数对CPU Profiler做精细的控制。

CPUPROFILE_FREQUENCY=x默认值:100 CPU探测器每秒钟采样多少次中断。

CPUPROFILE_REALTIME=1默认值:未设置 如果设置为任何值(包括0或空字符串),请使用ITIMER_REAL而不是ITIMER_PROF来收集配置文件。一般来说,ITIMER_REAL不如ITIMER_PROF准确,而且与alarm()的使用交互也不好,所以请选择ITIMER_PROF,除非您有理由选择ITIMER_REAL。

实例:

➜  build git:(develop_abel) ✗ LD_PRELOAD="/usr/local/lib/libprofiler.so" CPUPROFILESIGNAL=12 CPUPROFILE=recast.prof ./testbenchmark /root/develop/robot_develop/server/res/space/Level04/level.bin.to
Using signal 12 as cpu profiling switch
# 当使用kill -12 去打断这个进程之后将会获得这样的日志
PROFILE: interrupts/evictions/bytes = 616/461/35064
# 在本地也会多一个文件出来:
recast.prof.0
分析输出
pprof --dot ./testbenchmark ./recast.prof.0 > recast.dot

通过命令行生成dot文件。其实还能生成很多其他种类的文件类型。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uqb1DCbV-1630576092495)(https://z3.ax1x.com/2021/09/02/hrjfjf.png)]

参考

使用gperftools对C++程序进行profile定位性能瓶颈 如何使用gperftools工具定位C/C++程序的性能瓶颈,并用kcachegrind工具进行可视化展示。 阅读详情

相关推荐

【问题分析】使用gperftools分析排查内存问题

内存泄漏使用gperftool进行排查

Sunrise的专栏 1903

centos下安装和使用gperftools

1.先安装libunwind,如果已经安装好 跳过这一步。 下载传送门http://download.savannah.nongnu.org/releases/libunwind/ tar xvflibunwind-1.5.0.tar.gz cdlibunwind-1.5.0 ./configure --prefix=/use/local/ct3rd(自己要安装的路径) make && make install 运行sudo yum search libunwind 找到自己..

life_NULL的博客 5120

【gperftools】使用gperftools分析

文章目录使用gperftools分析配置环境Demo 使用gperftools分析 配置环境 perftools:http://code.google.com/p/gperftools/downloads/list libunwind:http://download.savannah.gnu.org/releases/libunwind/ 64位操作系统需要安装libunwind,官方推荐版本是libunwind-0.99-beta 安装过程: ./configure make make install

Slimshady的博客 719

gperftools交叉编译运行

1,下载gperftools 2,编译gperftools ./autogen.sh ./configure --with-sysroot=/opt/xxx/sysroots --build=x86_64-xxx-linux --host=aarch64-xxx-linux --prefix=/opt/xxx/sysroots/x86_64-xxx-linux/usr/ make make install 3,编译代码 官方文档: If you want the CPU profiler,

Flying_Motor的博客 1915

Profile 工具系列之二: gperftools

简介 gperftools 原名 Google Performance Tools,是一套可以做 profile 的工具,由 google 提供。 目前看来在 Linux 上特别的好使,Windows 基本不能用(官网说 Windows 正在开发,不知道会不会有下文) CPU profile 只是这个工具其中一个 feature,我们就用这个 feature。 其他 feature 还有 tcmal

zsl_oo7的专栏 4512

gperftools2.0

可以直接编译的gperftools,有vs2010的sln

Linux代码性能分析工具

docker下需要安装gperftools、ghostscript、graphviz。

misterdo的专栏 1546

使用SSE流式输出(Javaweb前后端实战)

SSE(Server-Sent Events)是一种在Web应用中实现单向实时通信的技术。通过SSE,服务器可以主动向客户端发送更新,而无需客户端不断发起请求。这对于需要实时更新的应用场景(如聊天应用、实时数据监控等)非常有用。(服务端单向传输客户端,长连接)

记得开心一点嘛的博客 1万+

交叉编译gperftools的tcmalloc库检测内存泄露

tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc、free,new,new[]等) 有多种使用方法,这里介绍一种不用改动代码的方法 下载 https://github.com/gperftools/gperftools/releases/ 解压 tar -xvf gperftools-2.9.1.tar.gz cd gperftools-2.9.1/ 交叉编译 ./config

zmlovelx(帅得不敢出门 程序员群31843264) 1699

使用amp训练出现Detected call of lr_scheduler.step() before optimizer.step().

这个警告是怎么产生的?是由于在算梯度的时候出现了nan,所以这一次更新会跳过,但是参数仍旧会更新所以出现了问题,按下面的做法加一个判断就行了。但是在使用amp进行混合精度训练出现的一个warning,调换代码顺序也不work。正常在训练的时候,对于优化器和参数更新的顺序这样就可以了。

weixin_46214675的博客 1306

别再折腾SNAP了!ENVI 5.6.0 直接拖拽打开Sentinel-2 L2A数据的正确姿势

本文详细介绍了ENVI 5.6.0直接处理Sentinel-2 L2A数据的高效方法,无需通过SNAP进行繁琐的重采样预处理。通过直接拖拽XML文件,用户可以快速加载不同分辨率的波段数据,显著提升工作效率。文章还对比了直接打开与SNAP重采样流程的优劣,并提供了常见问题解决方案和高级应用技巧。

weixin_30296405的博客 634

gperftools cpp wrapper

gperftools cpp wrapper // Compile command : ${CXX} -o test_profiler.elf -DUSE_GPERFTOOLS -DDEBUG -D_DEBUG ${CXXFLAGS} -O0 -g -Wall ${LIBS} -lprofiler ${BUILD_LDFLAGS} test_profiler.cpp// Bash Comm...

weixin_30332241的博客 134

Docker 安装 CentOS7

本文主要介绍了docker 下安装centos7。访问 CentOS 镜像库地址:https://hub.docker.com/_/centos?tab=tags&page=1。可以通过 Sort by 查看其他版本的 CentOS 。默认是最新版本 centos:latest 。 使用以下命令来查看是否已安装了 centos7: 启动centos容器,并把docker上centos的22端口映射到本机60001端口(端口号可以自己指定) 3、进入到Centos容器 4.安装ssh服务和网络必须软件

折腾java的博客 1万+

gperftools 使用教程

gperftools 是一个由 Google 开发的高性能工具集合,旨在帮助开发者优化和分析 C++ 程序的性能。它包括几个核心工具: - **TCMalloc**:一个更快的内存分配器。 - **Heap Profiler**:用于分析内存使用情况。 - **Heap Checker**:用于检测内存泄漏。 - **CPU Profiler**:用于分析 CPU 使用情况。 这些工具可以帮助...

gitblog_00994的博客 876

UDS诊断入门第一课:手把手教你玩转0x10会话控制服务(附ISO14229实战解析)

刚接触汽车电子诊断的工程师们,往往会被厚厚的ISO 14229标准文档和各种专业术语吓退。但就像学习编程要从"Hello World"开始一样,掌握UDS协议的最佳切入点就是0x10诊断会话控制服务。这个看似简单的服务,实际上是整个诊断系统的"钥匙"——它决定了ECU(电子控制单元)当前处于何种工作模式,直接影响着其他诊断服务的可用性。 在实际车辆诊断中,ECU默认处于DefaultSession模式,这种模式下许多高级诊断功能是被禁用的。想象一下你正在开发一个需要刷写ECU固件的工具,如果连最基本的会

weixin_30402343的博客 392

【XCharts插件】5-2、从Excel中读取数据并更新图表案例(v3.0)

XCharts插件是一款基于UGUI的功能强大、易用、参数可配置的数据可视化图表插件。【Unity3D插件】XCharts插件完全教程《全网最全》-专栏文章目录【XCharts插件】5-1、从Json中读取数据并更新图表案例(v3.0)介绍了如何从Json文件中读取数据,并更新表格,这篇文章就介绍如何从Excel中读取数据,并更新图表吧。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1274

gperftools性能检测工具使用

一、安装环境 1、安装编译libunwind (Linux 64位机必装) git clone -b v1.3-stable https://github.com/libunwind/libunwind.git ./autogen.sh ./configure make sudo make install 2、echo ‘/usr/local/lib’ > /etc/ld.so.conf.d/local.conf ldconfig 3、安装编译gperftools wget https://githu

u012537376的博客 991

科研绘图系列:R语言绘制世界地图数据分布(world map)

科研绘图系列:R语言绘制世界地图数据分布(world map)

专注生信领域 527

gperftools的安装使用说明

gperftools是Google推出一个非常强大的性能分析工具集,在以前使用时进行过文档的整理,但时过境迁,这里又有了一些不同,正好实际工程用到它,对其的安装和使用说明进行一次完整的文档化。gperftools主要包含三个功能:1、分析 CPU 性能能够通过统计一定时间内各个功能单元(线程、函数等)的执行时间并给出其占用比例,从而确定CPU瓶颈2、分析内存占用统计单位时间内各单元对内存的占用数量并查找是否有内存泄露3、自动检查内存泄露具体的图就不贴了,基本和原来的差不多。

fpcc的专栏 4905

搞懂 SAPUI5 Fiori 应用的 OData 授权维护:从 IWSG、IWSV 到 S_SERVICE 的完整实践

本文探讨了SAP Fiori项目中常见的授权问题及其解决方案。文章指出,开发人员常误将OData服务访问问题归咎于前端代码或配置,而实际上多因授权默认值未正确带入角色所致。详细分析了IWSG(前端服务组元数据)和IWSV(后端业务服务)两个关键对象的作用机制,强调应通过PFCG角色的Authorization Default入口维护服务对象,而非直接修改S_SERVICE授权对象。文章还提供了前后端授权配置的具体操作步骤,并特别提醒需同时配置前端和后端授权,才能确保应用完整可用性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 206

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

gperftools安装和使用

gperftools 下载和安装 github 上找到源码,下载并解压 64位机器需要先安装 apt-get install libunwind8-dev ./autogen.sh ./configure make -j8 # 安装到系统文件夹 sudo make install ldconfig 刷新动态库文件 CPU 使用方法一 gcc [...] -o myprogram -lprofil...

weixin_40021744的博客 5201

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

gperftools安装使用_gperftools 使用经验总结

先看了网上的一些资料,但都不太适合我。还是看了详细的资料才学会怎么用。按照 http://www.cnblogs.com/persistentsnail/p/3294843.html,yum安装gperftools-devel 和 libunwind安装gperftools-devel的时候,同时就安装了gperftools。如何使用,主要参考了https://wiki.geany.org/h...

weixin_33745224的博客 2085

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

gperftools

安装 $ git clone https://github.com/gperftools/gperftools.git $ cd gperftools $ ./autogen.sh $ ./configure $ make $ sudo make install 使用 CPU Profile https://gperftools.github.io/gperftools/...

Huntinux 892

gperftools 使用说明

gperftools 使用说明gperftools 基于采样技术来分析应用的性能;这种技术的基本思想是在程序运行过程中以固定的时间间隔,记录当前的调用栈。通过收集大量的样本,我们就可以得到程序在各个函数中花费的时间的大致比例。

keda002的博客 1674

gperftools检测内存泄露

工作中有碰到进程内存泄露问题,记录一下gperftools这个工具的使用方法。 首先是安装,64位系统gperftools的安装是需要unwind库支持,所以安装unwind,以及gperftools。在官网下载unwind版本和gperftools版本。自己用的是unwind-0.99-beta和gperftools-2.5版本的安装包。 unwind的安装比较简单,也没...

u013473725的博客 1900
上一篇: REUSEPORT-REUSEADDR-学习
下一篇: go-etcd阅读笔记
erlang_hell
博客等级 码龄14年 57粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值