SystemTap知识(一)

SystemTap是一个系统的跟踪探测工具。它能让用户来跟踪和研究计算机系统在底层的实现。

安装SystemTap需要为你的系统内核安装-devel,-debuginfo,-debuginfo-common包

使用下面的repo可以进行debuginfo的安装

[debuggery]

name=CentOS-$releasever - DebugInfo

baseurl=http://debuginfo.centos.org/releasever/releasever/basearch/

priority=1

需要理解下面几个名词:

instrumentation module -- 由SystemTap脚本编译的内核模块

host system -- 你编译instrumentation 模块的机器

target system -- 你运行instrumentation 模块的机器

target kernel -- target system的内核模块

你可以在一台机器上为其他机器编译trap模块,在目标机上只要安装systemtap-runtime,在宿主机上使用:

stap -r kernel_version script -m module_name

就能生成module_name.ko模块

然后在目标机上运行staprun module_name.ko就可以执行这个trap

stap命令参数:

-v

提供脚本运行的详细输出,可以使用多个的,比如stap -vv script.stp 输出的信息比stap -v script.stp多

-o filename

将输出存到文件filename中

-S size,count

限制输出的文件大小(兆byte算)和文件数目,多个文件会有后缀

-x process ID

这个processID能从脚本中的target()获取

-c 'command'

将target()函数做重命名

-e 'script'

使用script而不是文件作为输入 

-F

使用Flight recorder mode(飞行记录模式),让脚本在后台运行。

我们也可以使用 - 来将标准输入作为stap的输入

echo "probe timer.s(1) {exit()}" | stap -

SystemTap的飞行模式

飞行模式使用-F参数控制的,它并不保存所有的输出,而是只保存最近一段时间的输出,保存的文件大小和文件数量是根据-S来控制的。

飞行模式的监控是运行在后台的。

安装出现问题:

missing x86_64 kernel/module debuginfo

根据这篇文章解决:http://dikar.iteye.com/blog/1477619

SystemTap是如何工作的

每个SystemTap脚本都会创建一个sesssion,这个session按照下面的执行顺序做操作:

1 SystemTap使用tapset库检查这个脚本

2 SystemTap将脚本翻译成C,然后在根据这个C程序生成一个内核模块。(在/tmp/xxxx/xxxx.ko)

3 SystemTap加载这个模块,然后将代码挂载到探针probes(events 和handlers)中

4 当事件发生的时候,相关的代码就执行了

5 当session结束的时候,探针就被销毁

SystemTap的事件可以被归类为两种类型:同步和异步

同步事件包括:

syscall.system_call

vfs.file_operation

kernel.function("function")

kernel.trace("tracepoint")

module("module").function("function")

异步事件包括:

begin

end

timer events

printf

时间: 2024-08-01 12:05:49

SystemTap知识(一)的相关文章

SystemTap知识(二)

Unbuntu安装systemtap: http://www.cnblogs.com/hdflzh/archive/2012/07/25/2608910.html 1 更新源到http://mirror.ubuntu9.com/topmirror/sourceslist/all/54772423e19231bbb722a69fd878df28.list 2 apt-get install systemtap 3 apt-get install systemtap-sdt-dev 4 cdcdHO

Python中字典的基本知识初步介绍

  这篇文章主要介绍了Python中字典的基本知识初步介绍,是Python入门中的基础知识,需要的朋友可以参考下 字典是可变的,并且可以存储任意数量的Python对象,包括其他容器类型另一个容器类型.字典包括键对(称为项目)及其相应的值. Python字典也被称为关联数组或哈希表.字典的一般语法如下: ? 1 dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} 可以用下面的方式创建字典: ? 1 2 dict1 = { 'abc':

Python中列表的一些基本操作知识汇总

  这篇文章主要介绍了Python中列表的一些基本操作知识汇总,皆属于Python的基本功,需要的朋友可以参考下 Python最基本的数据结构是序列(列表/元组).一个序列中的每个元素都分配有一个数字- 它的位置或索引.第一个索引是0,第二个索引是1,依此类推. Python有6内置类型的序列,但最常见的是列表和元组,我们将在本教程中看到. 有一些东西可以使用所有序列类型来做.这些操作包括索引,切片,加,乘,并检查成员.此外,Python已经内置函数查找序列的长度和搜索它的最大和最小的元素. P

OProfile & Systemtap

Oprofile性能损耗小,如果CPU支持硬件监控的话(现在大多数CPU已经支持).但是Oprofile不能像stap样使用timer来间断输出或累计输出统计,STAP损耗较大.Oprofile 适合做性能诊断,例如系统中最耗CPU的进程,进程中哪些函数是比较耗CPU的,函数中哪段代码是最耗CPU的...operf开启监控, opreport, opannotate可以输出调用报告,或函数.汇编指令等统计情况.Stap 适合做跟踪.例子 :  [root@digoal ~]# cd /data0

checkbox-asp.net中关于CheckBox知识问答

问题描述 asp.net中关于CheckBox知识问答 asp.net 中把中的值传入数据库的后台代码

RESTful_基础知识

前言 本篇主要是RESTful的基础知识整理,主要是为了将要开始的Openstack架构主题做知识积累.理解好RESTful的设计思想无论是对学习Openstack架构还是Openstack Dashboard实现都是一件事半功倍的事情. RESTful REST(Representational State Transfer):是一种软件架构的设计风格,而不是一种标准.主要用于C/S架构的软件设计,也能很好的支持B/S架构,为软件设计提供了一组原则和约束条件,但这是原则和约束的条件均不具有标准

21世纪创业与知识之间的辩证关系

 昨天我与4年前的某同事谈到科技创业,他现在做游戏,可以说做的很不错,当我们谈到创业的艰难时,我作了一个比喻,说创业其实很简单,基础就像做盘子,发展就像做菜系.如同一个人要成长一样,盘子做宽做扎实了,上面的菜系其实自己会来的,并不要自己去操心.他很智慧的回我,第一个盘子最难.后来呢,我把这段话放到说说里,以前的一个学生留了一个叫管道的视频,以这个动漫的形式进一步说明做盘子的重要性,这点我觉到他已经成长不少了.      这二个人都是做软件开发的,应该同属一个生肖的,一个注重游戏领域,一个注重于应

中国人工智能学会通讯——面向知识图谱的自然语言问答系统 1 信息检索式的知识库问答

1 信息检索式的知识库问答 信息检索式的方法通常先确定问题的中心实体,继而生成问题的若干候选答案,再使用打分.排序等方式找出最适合原问题的答案.这类方法的整体框架比较简洁,对于简单问题有较好的效果. 1.1 确定中心实体 信息检索式的方法通常假设问题足够简单,大多数系统认为问题中有且仅有一个实体,这个实体被称作中心实体(Topic Entity),这是用户输入自然语言问题的核心,同时假设问题答案在知识图谱中离中心实体足够近,例如在离中心实体θ步以内(θ通常取2).例如问题"What is the

【软考教程】计算机系统知识

开始了软考备考的第二阶段,软考教程和专项复习.身为组长,必须做一个详细的阶段计划,带领组员,继续前进. 这一阶段,我们小组采取软考教程和专项复习相结合的阶段,知识点与典型试题同步进行. 每天一章的内容,还有设计模式,还有自考,只想说,时间真是不够用了. 第一章,计算机系统知识.每次看到这方面的知识,都觉得计算机真是个神秘的东西,不管是硬件方面还是软件方面,都有着不可捉摸的感觉. 不过,这也不是第一遍的学习了,之前在自考操作系统中.米老师第一年的讲课中,都有提到这部分内容的知识.所以,可以说,并不