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









相关文章
|
1月前
|
算法 数据可视化 Linux
Linux内核编译:深入理解`make menuconfig`命令
Linux内核编译:深入理解`make menuconfig`命令
32 0
|
1月前
|
XML Java Linux
【Linux 第三方库】linux 交叉编译dbus,expat
【Linux 第三方库】linux 交叉编译dbus,expat
26 0
|
24天前
|
人工智能 Ubuntu 机器人
【Valgrind】Valgrind安装(ubuntu系统)
【Valgrind】Valgrind安装(ubuntu系统)
|
9月前
|
NoSQL IDE Unix
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(2)
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(2)
143 0
|
4月前
|
存储 监控 Ubuntu
Linux下sysstat安装使用图文详解
Linux下sysstat安装使用图文详解
195 0
Linux下sysstat安装使用图文详解
|
9月前
|
NoSQL Ubuntu IDE
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(1)
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(1)
174 0
|
Ubuntu Linux
LINUX UBUNTU安装依赖库编译freeswitch
LINUX UBUNTU安装依赖库编译freeswitch
186 0
|
Linux 编译器
Linux下make -j加快编译速度
Linux下make -j加快编译速度
111 0
|
Ubuntu Linux 编译器
【Linux】内存检测工具Valgrind
【Linux】内存检测工具Valgrind
|
C语言 Linux
SystemTap工具的使用基础
systemtap工具的安装 准备工作 uname -a 查看当前内核版本是哪一个,然后使用 yum install kernel-devel 安装kernel debuginfo包 rpm -qi kernel-devel 找到内核构建的详细信息,然后去对应发布网站上找kernel-debuginfo和kernel-debuginfo-common包。
1986 0