systemtap(systemtap)

由网友(疯到世界都崩溃)分享简介:SystemTap 是监控以及追踪运转中的Linux 内核的操做的静态要领。那句话的要害词是静态,由于SystemTap 不应用东西构修1个特殊的内核,而是许可你正在运转时静态地安装该东西。内容简介SystemTap 取1种名为DTrace 的老技能相似,该技能源于Sun Solaris 操做体系。正在DTrace 中,开...

SystemTap 是监控和跟踪运行中的Linux 内核的操作的动态方法。这句话的关键词是动态,因为SystemTap 没有使用工具构建一个特殊的内核,而是允许您在运行时动态地安装该工具。

内容简介

如何利用ChatGPT帮你写代码

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的手册。

阅读全文

相关推荐

最新文章