近期在学习使用valgrind 来定位性能问题,记录一下整个操作过程以及涉及到的工具
一般在机器上都会预装valgrind 工具
使用callgrind 工具检查程序的调用情况,例如使用valgrind 来监控sequoiadb 的函数调用关系,可以执行以下命令来启动sequoiadb的某个节点进程
valgrind --tool=callgrind /opt/sequoiadb/bin/sequoiadb  -c /opt/sequoiadb/conf/local//
valgrind 会在执行的当前目录新建一个文件,文件的命名规范为 callgrind.out.PID
然后用户就可以像正常使用sequoiadb 一样,登陆进去执行你想要监控的命令,执行完毕后,你在通过ps -ef | grep valgrind 的方式找到对应的进程PID,然后将其退出。
用户可以根据valgrind 生成的监控文件,做一个初步的处理,来简单查看里面的函数调用关系
callgrind_annotate --auto=yes callgrind.out. > callgrind.out..log
新的callgrind.out.141064.log 文件就是一个经过初步统计的监控数据
更加友好的查看方式,是转换为图形化界面进行查看。
使用gprof2dot.py 工具将 valgrind 生成的监控数据转换为 dot 文件
python gprof2dot.py -f callgrind -n10 -s callgrind.out. > callgrind.out..dot
然后再使用 dot 工具,将刚才生成的dot 文件转换为gif 图。
注意,在后面附的资料中,建议转换为 png 格式,但是在楼主的suse环境中,转换为png 个是会报错,所以最终选择转换为gif格式。
dot -Tgif callgrind.out..dot -o callgrind.out..gif
如果是在ubuntu 16.04 环境上执行转换为 png ,就能够通过
dot -Tpng  callgrind.out..dot -o callgrind.out..png
以下就是使用valgrind 对sequoiadb 做了一次全表扫描的监控图,表中包含300多万条记录
当然,如果是希望在图形化街面上看到valgrind 更加详细的监控数据,还是建议大家使用kcachegrind 工具进行查看
在ubuntu上安装kcachegrind 图形化工具,查看callgrind 生成的监控数据
apt-get install kcachegrind
dot 是graphviz 程序里的一个工具,graphviz 下载地址:
编译方式
tar zxf graphviz-2.26..tar.gz
cd graphviz-2.26.
./configure --prefix=/usr
make && make install
valgrind 学习文档:
callgrind 输出文件转换教程
如何安装 dot 工具
 
gprof2dot.py 脚本下载链接:
http://www.bo56.com/download/gprof2dot.tar.gz

valgrind 使用入门的更多相关文章

  1. Valgrind 快速入门

    1. 介绍 Valgrind工具组提供了一套调试与分析错误的工具包,能够帮助你的程序工作的更加准确,更加快速.这些工具之中最有名的是Memcheck.它能够识别很多C或者C++程序中内存相关的错误,这 ...

  2. linux 内存泄露检测工具

    Valgrind Memcheck 一个强大开源的程序检测工具 下载地址:http://valgrind.org/downloads/current.html Valgrind快速入门指南:http: ...

  3. Valgrind的Memcheck快速入门

    一.前言        对于C/C++程序员来说,关于内存问题真是让人头痛不已,尤其是内存泄露.使用未初始化的局部变量进行跳转或移动等隐形问题.要求程序员养成良好的编码习惯确实很重要,但是人总会出现稀 ...

  4. Xapian使用入门

    关键字:搜索引擎.Xapian 一篇拖了两三年的入门总结文章,今天发出来,一方面是自己的总结,另一方面是给自己和他人的备忘.读者需要对搜索引擎有初步了解,譬如了解倒排.term.doc.相似度打分等概 ...

  5. C++雾中风景番外篇3:GDB与Valgrind ,调试代码内存的工具

    写 C++的同学想必有太多和内存打交道的血泪经验了,常常被 C++的内存问题搅的焦头烂额.(写 core 的经验了)有很多同学一见到 core 就两眼一抹黑,不知所措了.笔者 入"坑&quo ...

  6. 学习笔记之C++入门到精通(名师教学·手把手教会)【职坐标】_腾讯课堂

    C++入门到精通(名师教学·手把手教会)[职坐标]_腾讯课堂 https://ke.qq.com/course/101465#term_id=100105503 https://github.com/ ...

  7. gem5使用记录,gem5入门学习和环境配置。

    工作需要,对gem5有点兴趣,准备自己研究一下,gem5新手刚开始入门学习,主要参考了网上其他前人的文章和官方说明. 目前网上的前人文章有部分有点太早了,稍显过时,我结合自己的经历来整理一下流程. g ...

  8. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  9. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

随机推荐

  1. ecshop属性排序

    属性的排序有三个方式:sort_order, attr_price, goods_attr_id如果要修改的话,修改 includes/lib_goods.php文件的 get_goods_prope ...

  2. php设计模式之--组合模式

    php组合模式主要用于上下级关系,可以新增叶子和树枝,分析如下代码即可明白组合模式的含义: <?php header('Content-Type:text/html;charset=utf-8' ...

  3. CSS动画硬件加速

    http://zencode.in/14.CSS%E5%8A%A8%E7%94%BB%E7%9A%84%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96.html http:// ...

  4. LightOJ - 1027 A Dangerous Maze —— 期望

    题目链接:https://vjudge.net/problem/LightOJ-1027 1027 - A Dangerous Maze    PDF (English) Statistics For ...

  5. HDU2896 病毒侵袭 —— AC自动机

    题目链接:https://vjudge.net/problem/HDU-2896 病毒侵袭 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit ...

  6. IPFS - 可快速索引的版本化的点对点文件系统(草稿3)

    摘要 星际文件系统是一种点对点的分布式文件系统, 旨在连接所有有相同的文件系统的计算机设备.在某些方面, IPFS类似于web, 但web 是中心化的,而IPFS是一个单一的Bittorrent 群集 ...

  7. codeforces B. Bear and Strings 解题报告

    题目链接:http://codeforces.com/problemset/problem/385/B 题目意思:给定一条只有小写英文组成的序列,需要找出至少包含一个“bear”的单词的子序列个数.注 ...

  8. 2013 gzhu 校赛

    题目描述: Integer in C++ Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 128000/64000 KB (Java/Othe ...

  9. hibernate入门(-)

    1.struts2的支持 在web.xml中配置struts2的支持 <?xml version="1.0" encoding="UTF-8"?> ...

  10. 【Selenium】跳转问题

    /** * rewrite the get method, adding user defined log</BR> * 地址跳转方法,使用WebDriver原生get方法,加入失败重试的 ...