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,如需转载请自行联系原作者









相关文章
|
7月前
|
算法 数据可视化 Linux
Linux内核编译:深入理解`make menuconfig`命令
Linux内核编译:深入理解`make menuconfig`命令
508 0
|
7月前
|
编译器 Linux 开发工具
【linux】Linux编译器-gcc/g++使用
【linux】Linux编译器-gcc/g++使用
42 1
|
7月前
|
Linux 编译器 C语言
【Linux】Linux编译器-gcc/g++使用
【Linux】Linux编译器-gcc/g++使用
【Linux】Linux编译器-gcc/g++使用
|
NoSQL IDE Unix
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(2)
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(2)
180 0
|
存储 监控 Ubuntu
Linux下sysstat安装使用图文详解
Linux下sysstat安装使用图文详解
334 0
Linux下sysstat安装使用图文详解
|
NoSQL Ubuntu IDE
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(1)
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(1)
231 0
|
Linux 编译器 C语言
【Linux】Linux编译器gcc/g++的使用
【Linux】Linux编译器gcc/g++的使用
|
Linux
类似LINUX上的ldd,MAC使用otool查看库的链接库
类似LINUX上的ldd,MAC使用otool查看库的链接库
100 0
|
Linux
LINUX下载编译signalwire-c
LINUX下载编译signalwire-c
100 0
|
Linux
LINUX下载及编译libtool
LINUX下载及编译libtool
214 0