词条 | systemtap |
释义 | 1.简介SystemTap 是监控和跟踪运行中的Linux 内核的操作的动态方法。这句话的关键词是动态,因为SystemTap 没有使用工具构建一个特殊的内核,而是允许您在运行时动态地安装该工具。它通过一个名为Kprobes 的应用编程接口(API)来实现该目的。 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 等。 2.安装SystemTap在安装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 3.运行SystemTap运行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的手册。 |
随便看 |
|
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。