制作火焰图(纯笔记)

简介:

安装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的模块

安装配置好,确保能访问

Image(15)

写一个systemtrap脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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 &gt;
/home/yejianfeng/ngx.out&nbsp;
<P>WARNING: never-assigned local variable 'exit'  (alternatives: i s quit):
identifier 'exit'  at /home/yejianfeng/handcode/ngx.stp:10:4
<P>&nbsp;source: exit ;
<P>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ^
<P>WARNING: Eliding side-effect-free expression : identifier 'exit'  at :10:4
<P>&nbsp;source: exit ;
<P>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ^
<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. &nbsp;Try again with another '--vp 00001'  option.</P>

 

 

纯笔记。。。搞了半天没搞出来。。。MMD。。。水平太搓了。。。

目录
相关文章
|
Linux
如何看懂火焰图
如何看懂火焰图
659 0
如何看懂火焰图
|
4月前
|
缓存 数据库 数据安全/隐私保护
我绘制文章插图的三个神级工具
我绘制文章插图的三个神级工具
|
6月前
|
数据采集 定位技术 Python
航线 OD 图制作教程
航线 OD 图制作教程
83 0
|
11月前
|
监控 数据可视化 前端开发
火焰图是怎么画出来的?Pyroscope源码解析之火焰图
火焰图简述火焰图(Flame Graph) 由Brendan Gregg在2011年创造,是一种可视化程序性能分析工具,它可以帮助开发人员追踪程序的函数调用以及调用所占用的时间,并且展示出这些信息。一般性解释火焰图的基本思想是将程序的函数调用栈转化为一个矩形的 “火焰” 形图像,每个矩形的宽度表示该函数所占用的比例,高度表示函数的调用深度(也就是递归调用的层数)。通过比较不同时间点的火焰图,可以快
321 0
|
机器学习/深度学习 监控 算法
绘制森林资源图的工具介绍
绘制森林资源图的工具介绍
96 0
绘制森林资源图的工具介绍
|
存储 算法 程序员
1分钟制作朋友圈9宫格图片,不用任何P图软件
1分钟制作朋友圈9宫格图片,不用任何P图软件
222 0
1分钟制作朋友圈9宫格图片,不用任何P图软件
|
数据采集 运维 Ubuntu
R绘图 | 一幅小提琴图的美化之旅
R绘图 | 一幅小提琴图的美化之旅
491 0
R绘图 | 一幅小提琴图的美化之旅
基于Bokeh库,手把手教你制作子弹图和瀑布图!
基于Bokeh库,手把手教你制作子弹图和瀑布图!
基于Bokeh库,手把手教你制作子弹图和瀑布图!