近期在学习使用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. JQuery 如何获取select选中的值

    一.html代码 <select id="ddl"> <option value="100" emoney="12" &g ...

  2. a completely rewritten architecture of Hadoop cluster

    https://www.ibm.com/developerworks/library/bd-yarn-intro/

  3. moving from a host-centric infrastructure to a container-centric infrastructure

    https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ Why do I need Kubernetes and what c ...

  4. Why containers? Why should we care? 新旧容器的对比

    https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ The Old Way to deploy applications ...

  5. linux系统上安装svn服务器 环境linux+nginx+svnserver

    系统:Ubuntu 12.04 64位 lnmp环境 集成软件:PHP5.4.27.Nginx1.6.0.MySQL5.5.37 阿里云server svnserver有2种执行方式:独立server ...

  6. PAT 天梯赛 L1-049. 天梯赛座位分配 【循环】

    题目链接 https://www.patest.cn/contests/gplt/L1-049 思路 用一个二维数组来保存一个学校每个队员的座位号 然后需要判断一下 目前的座位号 与该学校当前状态下最 ...

  7. SYN FLOOD学习理解

    SYN FLOOD是一种比较常见的DoS攻击手段,它的特点就是防不胜防.SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源.SYN攻击除了能影响主机外 ...

  8. CSS3学习笔记(3)—左右飞入的文字

    前几天看到一个企业招聘的动画觉得很炫,里面有个企业介绍的文字是用飞入的效果做出来的,今天尝试了写了一下,感觉还不错~\(≧▽≦)/~啦啦啦 下面来看我做的动态效果: 其实上面的效果很简单的,我的截图软 ...

  9. oracle查看锁表进程,杀掉锁表进程

    查看锁表进程SQL语句1: select sess.sid,     sess.serial#,     lo.oracle_username,     lo.os_user_name,     ao ...

  10. Protobuf入门实例

    Protobuf是一个灵活.高效.结构化的数据序列化框架,相比于XML等传统的序列化工具, 它更小.更快.更简单.Protobuf支持数据结构化一次就可以到处使用,甚至是跨语言使用,通过代码生成工具可 ...