systemtap的安装和使用

本文详细介绍SystemTap在CentOS和Ubuntu系统上的安装步骤,包括更新YUM源、安装依赖包及内核调试信息等。此外,还介绍了SystemTap的三种使用方式:以模块方式、命令方式和脚本方式运行。



在上篇博客中,笔者介绍了如何三种常用的性能分析工具,其中就提到了systemtap及其前端工具stap。想必读者很好奇,既然systemtap功能这么强大,那么该如何安装和使用它呢?


1. systemtap的安装

下面基于笔者的CentOS系统,分享一下自己的安装步骤:

a.如果CentOS自带的yum的源无法联通,在国内可以更新yum.repos.d:

cd /etc/yum.repos.d ;

mv CentOS-Base.repo CentOS-Base.repo.bk ;

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo;

yum makecache

b.FedoraCentOSRedhat上,可以通过下面的命令来安装ststemtap及其依赖的kernel-develope


yum install systemtap systemtap-runtime

yum install kernel-devel gcc make

如果要对磁盘和网络进行调试,可以安装专门针对这两者的systemap脚本:

yum install tuned-utils-systemtap.noarch

为了使systemtap脚本能够运行,需要安装依赖的内核调试信息包,在现代的OS上可以通过下面的命令一键安装:

stap-prep

如果上面的命令执行失败,很可能需要为当前内核安装相应的package:

yum install kernel-devel-`uname -r`

debuinfo-install kernel-debuginfo-`uname -r`

如果依赖的包已经手动下载了,可以用下面的命令进行安装:

rpm –force -ivh package-names



而在Ubuntu类系统上,可以参考下面的命令进行安装:

apt-get install systemtap

apt-get install linux-headers-generic gcc make


同样也需要准备安装内核调试相关的包:

apt-get install linux-image-debug-generic

ln -s /boot/vmlinux-debug-$(uname -r) \

/lib/modules/$(uname -r)/vmlinux



c.测试是否安装成功

上面的步骤完成之后,可以通过下面的命令来检查安装是否成功:

stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'



2. systemtap的使用

下面说明几种常用的使用方式:


2.1以模块的方式运行

例如从test.stp生成一个能运行在当前内核上的插桩模块test.ko

stap -r `uname -r` -e 'probe vfs.read {exit()} -m simple

如果上面命令执行成功,会生成test.ko,为了让它执行期望的探测工作,用staprun命令把它跑起来:

staprun test.ko


2.2 以命令的方式运行


同样完成上面的任务,可以用下面的命令执行执行:

echo “probe vfs.read exit()} “ | stap -v -

再比如:

stap -v “probe timer.s(1) exit()} “


2.3 以脚本或命令的方式运行

如果把是上面的“probe probe timer.s(1) exit()}”写入到test.stp脚本里,就可以按照下面的方式进行执行:

stap -vvv test.stp

这种方式通常可以跟很多选项:

-o file_name 指定输出文件名

-x procss_id 指定探测进程ID'process_id‘的程序

-esystemTap translator指定一个脚本而非文件

-F执行systemtapflight recorded 模式,并且指定在后台执行


参考文章:

SystemTap_Beginners_Guide


















本文转自存储之厨51CTO博客,原文链接:http://blog.51cto.com/xiamachao/1858234,如需转载请自行联系原作者









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值