Gperftools交叉编译

Gperftools(Google Performance Tools)是由谷歌开发的一组性能分析工具。它包括了多个工 具,其中最为知名的是 tcmalloc(Thread-Caching Malloc)和 CPU Profiler。 相比与其他性能分析工具,gperftools有Profiling速度快,灵活性较高的优点。 主流的热点分析工具,分别是GNU gprof、Valgrind和Google perftools.

官方教程文档:Gperftools

git clone https://github.com/gperftools/gperftools.gitcd gperftools./autogen.sh    #生成configure./configure --with-sysroot=/opt/rockchip --build=aarch64-none-linux-gnu --host=aarch64-none-linux-gnu --prefix=/code/gperftools/installmake​make install

tcmalloc( Windows目前仅支持 tcmalloc_minimal,如 cpu-profiler 和 leak-checker 等,还没有移植到Windows)

  • - heap-checking(`libtcmalloc`),Heap-checker是专门检测**内存泄漏**的工具,heap-checker是常用的用法是检测程序整个进程生命周期的内存泄露
  • - heap-profiling(`libtcmalloc`),Heap-profiler是**内存监控器**,可以随时知道内存的使用情况。
  • - CPU Profiler(`libprofiler`),主要是通过**采样**的方式,给出一段时间内程序实际占用cpu时间片进行统计和分析。

结果分析: 使用`pprof` 工具来分析采样数据,生成图形化的性能分析结果。

heap-profiling(堆分析)

这是我们在Google使用的堆分析器,用于探索c++程序如何管理内存

  • 计算出在任何给定时间程序堆中的内容
  • 定位内存泄漏
  • 找到占用最大内存的地方

分析系统记录所有的分配和自由。它跟踪每个分配站点的各种信息。分配位置被定义为调用malloc、calloc、realloc或new时的活动堆栈跟踪。
使用它有三个部分:将库链接到应用程序、运行代码和分析输出。

通过 -ltcmalloc 链接到库

调用接口开启/关闭内存快照:

 IsHeapProfilerRunning() //判断是否开启HeapProfilerStart(prefix/*前缀,文件生成路径+xxx*/) and HeapProfilerStop()//开启和关闭
//生成内存快照HeapProfilerDump()// 更适合于长时间的监控和离线分析,因为它将数据写入到文件中,可以保存下来供后续分析。
GetHeapProfile() //需要手动释放内存,则更适合于实时监控和集成到代码中,它可以立即处理内存分配信息,但不会自动保存数据。

如果在程序中打开堆分析,则程序将定期向文件系统写入配置文件。配置文件的顺序将被命名为:

           <prefix>.0000.heap<prefix>.0001.heap<prefix>.0002.heap

pprof解析:

 //解析结果输出到指定文件
pprof --gv gfs_master /tmp/profile.0100.heap > grap.pdf
//比对结果输出到指定文件% pprof --base=/tmp/profile.0004.heap gfs_master /tmp/profile.0100.heap > grap.pdf
% pprof --text gfs_master /tmp/profile.0100.heap255.6  24.7%  24.7%    255.6  24.7% GFS_MasterChunk::AddServer184.6  17.8%  42.5%    298.8  28.8% GFS_MasterChunkTable::Create176.2  17.0%  59.5%    729.9  70.5% GFS_MasterChunkTable::UpdateState169.8  16.4%  75.9%    169.8  16.4% PendingClone::PendingClone76.3   7.4%  83.3%     76.3   7.4% __default_alloc_template::_S_chunk_alloc49.5   4.8%  88.0%     49.5   4.8% hashtable::resize第一列包含以MB为单位的直接内存使用。
第四列包含过程及其所有调用方使用的内存。
第二列和第五列只是第一列和第四列中数字的百分比表示。
第三列是第二列的累加和(即,第三列中的第k项是第二列中的前k项的和)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/36670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四川省高等职业学校大数据技术专业建设暨专业质量监测研讨活动顺利开展

6月21日&#xff0c;省教育评估院在四川邮电职业技术学院组织开展全省高等职业学校大数据技术专业建设暨专业质量监测研讨活动。省教育评估院副院长赖长春&#xff0c;四川邮电职业技术学院党委副书记、校长冯远洪&#xff0c;四川邮电职业技术学院党委委员、副校长程德杰等出席…

鸿蒙开发设备管理:【@ohos.multimodalInput.inputConsumer (组合按键)】

组合按键 InputConsumer模块提供对按键事件的监听。 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。本模块接口均为系统接口&#xff0c;三方应用不支持调用。 导入模块 import inputConsumer …

36.基于多目标螳螂优化算法的微电网优化matlab

微♥关注“电击小子程高兴的MATLAB小屋”获取资源 基于螳螂优化算法的多目标优化算法 求解微电网多目标优化调度 比较不同目标函数寻优对调度结果的影响 第1种.将两个目标函数值归一化相加&#xff0c;取相加后最小的目标值的粒子&#xff0c;即寻找折衷解并画图 第2种寻找…

afterPropertiesSet方法的作用

在spring的bean的生命周期中&#xff0c;实例化->生成对象->属性填充后会进行afterPropertiesSet方法&#xff0c;这个方法可以用在一些特殊情况中&#xff0c;也就是某个对象的某个属性需要经过外界得到&#xff0c;比如说查询数据库等方式&#xff0c;这时候可以用到sp…

AI助力校园安全:EasyCVR视频智能技术在校园欺凌中的应用

一、背景分析 近年来&#xff0c;各地深入开展中小学生欺凌行为治理工作&#xff0c;但有的地方学生欺凌事件仍时有发生&#xff0c;严重损害学生身心健康&#xff0c;引发社会广泛关注。为此&#xff0c;教育部制定了《防范中小学生欺凌专项治理行动工作方案》进一步防范和遏…

在 Python 学习中,什么是变量,如何声明和使用变量?

一、什么是变量 变量是计算机编程中一个基本的概念&#xff0c;简单来说&#xff0c;变量是一个用于存储数据的命名位置。变量的值是可以变化的&#xff0c;因此被称为“变量”。在Python编程中&#xff0c;变量是用来保存数据的容器&#xff0c;可以将数据赋值给变量&#xf…

json文件 增删查改

默认收藏夹 qt操作json格式文件... 这个人的 写的很好 我的demo全是抄他的 抄了就能用 —————————— 下次有空把我的demo 传上来 在E盘的demo文件夹 json什么名字

Leetcode - 133双周赛

目录 一&#xff0c;3190. 使所有元素都可以被 3 整除的最少操作数 二&#xff0c;3191. 使二进制数组全部等于 1 的最少操作次数 I 三&#xff0c;3192. 使二进制数组全部等于 1 的最少操作次数 II 四&#xff0c;3193. 统计逆序对的数目 一&#xff0c;3190. 使所有元素都…

PyQt问题汇总(持续更新)

目录 1.抛出异常后QAppliaction自动闪退 2.Unbuntu共享文件夹自动挂载 1.抛出异常后QAppliaction自动闪退 开发阶段&#xff0c;PyQt5 QAppliaction会在遇到未捕获的异常时立即退出&#xff0c;它能够快速发现并报告错误&#xff0c;我在调用一些密码算法库的时候&#xff0…

Eureka三级缓存架构

Eureka Server缓存机制概述 Eureka是Netflix开源的服务发现框架&#xff0c;它具有高可用、可扩展、易于部署等优点&#xff0c;被广泛应用于微服务架构中。其中一个重要的组件就是Eureka Server&#xff0c;它负责维护服务注册表&#xff0c;以及向客户端提供服务注册信息。 …

FreeBSD虚拟化解决之道:高效、安全、灵活的虚拟解决方案全览

FreeBSD下的虚拟化技术 虚拟化软件可让一台计算机同时运行多个操作系统。这种用于个人电脑的系统软件通常涉及一个运行虚拟化软件的宿主机&#xff08;host&#xff09;操作系统&#xff0c;并支持任何数量的客户机&#xff08;guest&#xff09;操作系统。 FreeBSD下的虚拟解…

基于Java的地方废物回收机构管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;MIS的总体思想&#xff0c;MySQL数据库 工具&#xff1a;Eclipse&#xff0c;…

【数据结构】详解二叉树之堆

失败只是暂时停止成功&#xff0c;假如我不能&#xff0c;我就一定要&#xff1b;假如我要&#xff0c;我就一定能&#xff01;&#x1f493;&#x1f493;&#x1f493; 目录 ✨说在前面 &#x1f34b;知识点一&#xff1a;树的概念和结构 • &#x1f330;1.什么是树&#x…

【漏洞复现】学分制系统GetTimeTableData SQL注入

0x01 产品简介 学分制系统由上海鹏达计算机系统开发有限公司研发&#xff0c;是基于对职业教育特点和需求的深入理解&#xff0c;结合教育部相关文件精神&#xff0c;并广泛吸纳专家、学者意见而开发的一款综合性管理系统。系统采用模块化的设计方法&#xff0c;方便学校根据自…

新奥集团校招面试经验分享、测评笔试题型分析

一、走进新奥集团 新奥集团成立于1989年&#xff0c;总部位于河北廊坊&#xff0c;是中国领先的清洁能源企业集团。业务涵盖城市燃气、能源化工、环保科技等多个领域&#xff0c;致力于构建现代能源体系&#xff0c;提升生活品质。 二、新奥集团校招面试经验分享 新奥集团的…

浔川AI3款产品同步上线——浔川AI社

第一款&#xff1a;浔川AI翻译v3.0 正式代码&#xff1a; # -*- coding: utf-8 -*- import tkinter as tk import tkinter.messagebox import pickle import random# 窗口 window tk.Tk() window.title(AI翻译登录界面) window.geometry(450x200) # 画布放置图片 # canvastk…

小程序驾校预约系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学员管理&#xff0c;教练管理&#xff0c;驾校信息管理&#xff0c;驾校车辆管理&#xff0c;教练预约管理&#xff0c;考试信息管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;驾校信息&a…

一个简单的文件下载服务

背景&#xff1a;我需要一个简单的文件下载功能&#xff0c;例如&#xff1a;输入 /Users/Documents//filedownload/src/main/resources/a.txt会下载文件到本地 准备&#xff1a;新建一个简单的 springboot 服务&#xff0c;直接上代码&#xff0c;如有需要 pom.xml 放在最后 …

ROS2创建自定义接口

ROS2提供了四种通信方式&#xff1a; 话题-Topics 服务-Services 动作-Action 参数-Parameters 查看系统自定义接口命令 使用ros2 interface package sensor_msgs命令可以查看某一个接口包下所有的接口 除了参数之外&#xff0c;话题、服务和动作(Action)都支持自定义接口&am…

【智能算法】决策树算法

目录 一、基本概念 二、工作原理 三、决策树算法优点和缺点 3.1 决策树算法优点 3.2 决策树算法缺点 四、常见的决策树算法及matlab代码实现 4.1 ID3 4.1.1 定义 4.1.2 matlab代码实现 4.2 C4.5 4.2.1 定义 4.2.2 matlab代码实现 4.3 CART 4.3.1 定义 4.3.2 mat…