制作火焰图(纯笔记)
2013-10-17 13:55 轩脉刃 阅读(3195) 评论(2) 编辑 收藏 举报安装systemtap
按照官网说的安装:http://sourceware.org/systemtap/wiki/SystemTapOnCentOS
我的操作系统是centos
uname -rm:
2.6.18-164.el5xen x86_64
yum install systemtap
wget http://debuginfo.centos.org/5/x86_64/kernel-debuginfo-2.6.18-164.el5.x86_64.rpm
wget http://debuginfo.centos.org/5/x86_64/kernel-debuginfo-common-2.6.18-164.el5.x86_64.rpm
[root@test34x-nova ~/software]# rpm -Uhv kernel-debuginfo-*rpm
warning: kernel-debuginfo-2.6.18-164.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID e8562897
Preparing... ########################################### [100%]
1:kernel-debuginfo-common########################################### [ 50%]
2:kernel-debuginfo ########################################### [100%]
测试是否安装成功
stap -ve 'probe begin { log("hello world") exit() }'
提示:
Checking "/lib/modules/2.6.32-279.el6.x86_64/build/.config" failed with error: 没有那个文件或目录
Incorrect version or missing kernel-devel package, use: yum install kernel-devel-2.6.32-279.el6.x86_64
下载Flame Graph
https://github.com/brendangregg/FlameGraph
比如我放在这个目录里:
/home/yejianfeng/software/FlameGraph-master
下面拿nginx的一个模块来进行测试
http://www.cnblogs.com/yjf512/archive/2013/06/13/3133569.html
这里有个自己写的mysecret2的模块
安装配置好,确保能访问
写一个systemtrap脚本:
global s; global quit = 0; probe timer.profile { if(pid() == target()) { if (quit) { foreach (i in s-) { print_ustack(i); printf("\t%d\n", @count(s[i])); } exit; } else { s[ubacktrace()] <<< 1; } } } probe timer.s(20) { quit = 1; }
<P>[root@test34x-nova ~/handcode]# stap --ldd -d /home/yejianfeng/nginx/nginx/sbin/nginx --all-modules -D MAXMAPENTRIES=256 -D MAXACTION=20000 -D MAXTRACE=100 -D MAXSTRINGLEN=4096 -D MAXBACKTRACE=100 -x 26150 /home/yejianfeng/handcode/ngx.stp --vp 0001 > /home/yejianfeng/ngx.out <P>WARNING: never-assigned local variable 'exit' (alternatives: i s quit): identifier 'exit' at /home/yejianfeng/handcode/ngx.stp:10:4 <P> source: exit; <P> ^ <P>WARNING: Eliding side-effect-free expression : identifier 'exit' at :10:4 <P> source: exit; <P> ^ <P>WARNING: missing unwind/symbol data for module 'kernel' <P>WARNING: missing unwind/symbol data for module 'uprobes' <P>Pass 4: compiled C into "stap_7ee66ba3cf5480d819b30e4f49bf3bb1_3633.ko" in 5560usr/1320sys/9525real ms. <P>WARNING: /usr/bin/staprun exited with status: 1 <P>Pass 5: run failed. Try again with another '--vp 00001' option.</P>
纯笔记。。。搞了半天没搞出来。。。MMD。。。水平太搓了。。。
实时了解作者更多技术文章,技术心得,请关注微信公众号“轩脉刃的刀光剑影”
本文基于署名-非商业性使用 3.0许可协议发布,欢迎转载,演绎,但是必须保留本文的署名叶剑峰(包含链接http://www.cnblogs.com/yjf512/),且不得用于商业目的。如您有任何疑问或者授权方面的协商,请与我联系。