SystemTap 是监控和跟踪运行中的Linux 内核的操作的动态方法。这句话的关键词是动态,因为SystemTap 没有使用工具构建一个特殊的内核,而是允许您在运行时动态地安装该工具。
内容简介
SystemTap 与一种名为DTrace 的老技术相似,该技术源于Sun Solaris 操作系统。在DTrace 中,开发人员可以用D 编程语言(C 语言的子集,但修改为支持跟踪行为)编写脚本。DTrace 脚本包含许多探针和相关联的操作,这些操作在探针“触发”时发生。例如,探针可以表示简单的系统调用,也可以表示更加复杂的交互,比如执行特定的代码行。清单1 显示了DTrace 脚本的一个简单例子,它计算每个进程发出的系统调用的数量(注意,使用字典将计数和进程关联起来)。该脚本的格式包含探针(在发出系统调用时触发)和操作(对应的操作脚本)。DTrace 是Solaris 最引人注目的部分,所以在其他操作系统中开发它并不奇怪。
DTrace 是在Common Development and Distribution License (CDDL) 之下发行的,并且被移植到FreeBSD 操作系统中。
另一个非常有用的内核跟踪工具是ProbeVue,它是IBM 为IBM? AIX? 操作系统6.1 开发的。您可以使用ProbeVue 探查系统的行能和性能,以及提供特定进程的详细信息。这个工具使用一个标准的内核以动态的方式进行跟踪。考虑到DTrace 和ProbeVue 在各自的操作系统中的巨大作用,为Linux 操作系统策划一个实现该功能的开源项目是势不可挡的。SystemTap 从2005 年开始开发,它提供与DTrace 和ProbeVue 类似的功能。许多社区还进一步完善了它,包括Red Hat、Intel、Hitachi 和IBM 等。
安装介绍
在安装SystemTap之前,需要确保系统中已经安装了其它两个软件包:kernel-debuginfo RPM:SystemTap需要通过内核调试信息来定位内核函数和变量的位置。对于通常的发行版,并没有安装kernel-debuginfo
RPM,我们可以到发行版的下载站点下载。
elfutils RPM:SystemTap需要elfutils软件包提供的库函数来分析调试信息。目前的SystemTap要求安装elfutils-0.123以上版本。目前最新的版本是0.124-0.1。如果需要,我们可以从SystemTap的站点下载RPM或者源码来升级。接下来就可以安装SystemTap了,这有通过RPM或者源码安装两种方式:
(1).通过RPM安装Fedora Core 6缺省情况下已经安装了systemtap。
(2).通过源码安装:从SystemTap的FTP站点下载最新的源码
然后安装如下:
/root > tar -
jxf SystemTap
/root > cd src
/root/src> ./configure
/root/src> make
/root/src> make install
运行介绍
运行SystemTap首先需要root权限。
运行SystemTap有三种形式:
(1).从文件(通常以.stp作为文件名后缀)中读入并运行脚本:stap [选项] 文件名
(2).从标准输入中读入并运行脚本:stap [选项] -
(3).运行命令行中的脚本:stap [选项] -e 脚本
(4).直接运行脚本文件(需要可执行属性并且第一行加上#!/usr/bin/stap):
./脚本文件名使用"Ctrl+C"中止SystemTap的运行。
systemtap的选项还在不断地扩展和更新中,其中最常用的选项包括:
-v -- 打印中间信息
-p NUM -- 运行完Pass Num后停止(缺省是运行到Pass 5)
-k -- 运行结束后保留临时文件不删除
-b -- 使用RelayFS文件系统来将数据从内核空间传输到用户空间
-M -- 仅当使用-b选项时有效,运行结束时不合并每个CPU的单独数据文件
-o FILE -- 输出到文件,而不是输出到标准输出
-c CMD -- 启动探测后,运行CMD命令,直到命令结束后退出
-g -- 采用guru模式,允许脚本中嵌入C语句
其它更多选项请参看stap的手册。
相关推荐
最新文章