0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用valgrind的callgrind工具进行多线程性能分析

如意 来源:CSDN 作者:CaspianSea 2020-06-22 09:51 次阅读

valgrind是开源的性能分析利器。 根据它的文档,可以用它来检查内存泄漏等问题,还可以用来生成函数的调用图,就这两个功能就足够有吸引力了。

本文主要是介绍如何使用valgrind的callgrind工具进行性能分析。

分析过程

使用callgrind工具生成性能分析数据

命令格式如下:

valgrind --tool=callgrind 。/exproxy

其中 ./exproxy就是我们要分析的程序。执行完毕后,就会在当前目录下生成一个文件。文件名为“callgrind.out.进程号”。如,callgrind.out.31113。注意,对于daemon进程的调试,不要通过kill -9方式停止。

如果你调试的程序是多线程,你也可以在命令行中加一个参数 -separate-threads=yes。这样就会为每个线程单独生成一个性能分析文件。如下:

valgrind --tool=callgrind --separate-threads=yes 。/exproxy

生成的文件除了callgrind.out.31113外,还会多出一些子线程的文件。文件名如下:

callgrind.out.31113-01 callgrind.out.31113-02 callgrind.out.31113-03

把callgrind生成的性能数据转换成dot格式数据

可以使用gprof2dot.py脚本,把callgrind生成的性能分析数据转换成dot格式的数据。方便使用dot把分析数据图形化。

脚本可以 这里下载。脚本使用方式如下:

使用dot把数据生成图片

命令格式如下:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 多线程
    +关注

    关注

    0

    文章

    271

    浏览量

    19727
  • Valgrind
    +关注

    关注

    0

    文章

    9

    浏览量

    6764
收藏 人收藏

    评论

    相关推荐

    多线程和多进程的区别

    6.你的数据库一会又500个连接数,一会有10个,你分析一下情况7.udp和tcp的区别8.多线程和多进程的区别9.有一台web服务器,你选择用多线程还是多进程,...
    发表于 07-19 07:21

    如何合理的进行线程切换与调度

    基于STM32F4XX+RTOS的多线程程序开发及线程性能分析与状态查看前言STM32F4xx系列是ST公司高性价比产品,由于可以很方便的移植RTOS系统,在
    发表于 08-24 07:33

    多线程的过程程序

    1、多线程了解线程之前我们必须要先了解(程序—>进程—>线程)的过程程序:是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。进程:进程指正在运行的程序
    发表于 08-24 08:28

    QNX环境下多线程编程

    介绍了QNX 实时操作系统和多线程编程技术,包括线程间同步的方法、多线程程序的分析步骤、线程基本程序结构以及实用编译方法。QNX 是由加拿大
    发表于 08-12 17:37 30次下载

    LINUX系统下多线程与多进程性能分析

    采用多进程处理多个任务,会占用很多系统资源(主要是CPU 和内存的使用)。在LINUX 中,则对这种弊端进行了改进,在用户态实现了多线程处理多任务。本文系统论述了多线程
    发表于 08-13 08:31 20次下载

    数控测井软件中的多线程编程技术

    为满足实时测井需求,提高系统资源的利用率和系统性能,在数控测井软件开发中将多线程编程技术应用其中,并对多线程编程技术应用的可行性和必要性进行分析
    发表于 01-14 17:17 32次下载

    LabWindows_CVI多线程技术的应用研究

    分析线程与进程的关系,研究了LabWindows/CVI多线程技术运行机制及其数据保护机制,对利用异步定时器实现的多线程软件与传统单线程
    发表于 08-29 14:53 68次下载
    LabWindows_CVI<b class='flag-5'>多线程</b>技术的应用研究

    MFC下的多线程编程

    计算机上的上位机制作工具语言之MFC下的多线程编程
    发表于 09-01 14:55 0次下载

    Windows多线程编程

    计算机上的上位机制作工具语言之Windows多线程编程,感兴趣的可以看看。
    发表于 09-01 15:27 0次下载

    关于多线程编程教程及经典应用案例的汇总分析

    在一个程序中,这些独立运行的程序片段叫作线程,利用它编程的概念就叫作多线程处理。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理
    发表于 10-16 16:46 0次下载

    多线程好还是单线程好?单线程多线程的区别 优缺点分析

    摘要:如今单线程多线程已经得到普遍运用,那么到底多线程好还是单线程好呢?单线程多线程的区别又
    发表于 12-08 09:33 8w次阅读

    什么是多线程编程?多线程编程基础知识

    摘要:多线程编程是现代软件技术中很重要的一个环节。要弄懂多线程,这就要牵涉到多进程。本文主要以多线程编程以及多线程编程相关知识而做出的一些结论。
    发表于 12-08 16:30 1.2w次阅读

    如何利用基于字节码插桩实现的多线程调试工具

    在软件演化过程中,代码的调试是不可或缺的重要环节。对于多线程程序,线程的交错和调度是非确定的,不同的线程调度会产生不同的结果,程序员较难调试多线程程序。为此,对实际项目中
    发表于 07-06 14:13 13次下载
    如何利用基于字节码插桩实现的<b class='flag-5'>多线程</b>调试<b class='flag-5'>工具</b>

    Java多线程永动任务 多线程异步任务项目解读

    1. 功能说明 2. 多线程任务示例 2.1 线程池 2.2 单个任务 2.3 任务入口 2.4 结果分析 2.5 源码地址 3. 写在最后 大家好,今天教大家撸一个 Java 的多线程
    的头像 发表于 10-19 11:46 798次阅读

    多线程的情况下如何对一个值进行 a++ 操作

    多线程的情况下,对一个值进行 a++ 操作,会出现什么问题? a++ 的问题 先写个 demo 的例子。把 a++ 放入多线程中运行一下。定义 10 个线程,每个
    的头像 发表于 10-13 11:17 306次阅读
    在<b class='flag-5'>多线程</b>的情况下如何对一个值<b class='flag-5'>进行</b> a++ 操作