什么是systemtap
SystemTap 是监控和跟踪运行中的 Linux 内核的操作的动态方法。
假如现在有这么一个需求:需要获取正在运行的 Linux 系统的信息,如我想知道系统什么时候发生系统调用,发生的是什么系统调用等这些信息,有什么解决方案呢?
- 最原始的方法是,找到内核系统调用的代码,加上我们需要获得信息的代码、重新编译内核、安装、选择我们新编译的内核重启。这种做法对于内核开发人员简直是梦魇,因为一遍做下来至少得需要1个多小时,不仅破坏了原有内核代码,而且如果换了一个需求又得重新做一遍上面的工作。所以,这种调试内核的方法效率是极其底下的。
- 之后内核引入了一种Kprobe机制,可以用来动态地收集调试和性能信息的工具,是一种非破坏性的工具,用户可以用它跟踪运行中内核任何函数或执行的指令等。相比之前的做法已经有了质的提高了,但Kprobe并没有提供一种易用的框架,用户需要自己去写模块,然后安装,对用户的要求还是蛮高的。
- systemtap 是利用Kprobe 提供的API来实现动态地监控和跟踪运行中的Linux内核的工具,相比Kprobe,systemtap更加简单,提供给用户简单的命令行接口,以及编写内核指令的脚本语言。对于开发人员,systemtap是一款难得的工具。
下面介绍如何在CentOS(redhat)下安装SytemTap
SystemTap的安装
1. 查看kernel版本
这里假设内核版本为:2.6.18-128.el5
2. 安装kernel-devel
注意:kernel-devel的版本必须和内核版本一致。yum有可能安装的版本和上面的内核版本不一致。所以有时候需要去寻找对应的kernel-devel版本。可以去以下链接中找对应的kernel-devel版本,并安装。
http://ftp.cs.stanford.edu/pub/rpms/centos/5/x86_64/
安装好的kernel-devel目录为:/usr/src/kernels/2.6.18-128.el5-x86_64
3. 安装systemtap
4.安装debuginfo
去以下链接寻找对应内核的debuginfo版本, 名称如下:
kernel-debuginfo-common-xxxxx
kernel-debuginfo-xxxx
如果没有找到,自行google。。
我们这里的内核版本对应的rpm包路径为:
下载,并安装
安装好之后,简单测试一下:
如果运行结果如下,则证明安装成功。
Pass 2: analyzed script: 1 probe(s), 2 function(s), 0 embed(s), 0 global(s) using 87916virt/22168res/2816shr kb, in 10usr/0sys/8real ms.
Pass 3: translated to C into "/tmp/stapUAkcfg/stap_bb7ab36de6e52e5ead064527393ebde2_790.c" using 87916virt/22376res/3008shr kb, in 0usr/0sys/1real ms.
Pass 4: compiled C into "stap_bb7ab36de6e52e5ead064527393ebde2_790.ko" in 3040usr/380sys/3535real ms.
Pass 5: starting run.
hello world
Pass 5: run completed in 0usr/30sys/297real ms.
参考:
https://sourceware.org/systemtap/wiki/SystemTapOnCentOS
http://www.cnblogs.com/hazir/p/systemtap_introduction.html
http://www.ibm.com/developerworks/cn/linux/l-systemtap/
相关推荐
Centos7下安装MongoDB
centos7离线安装vim
centos之SSH安装centos之SSH安装centos之SSH安装centos之SSH安装
centos7离线安装bzip2
centos7离线安装bison
CentOS7离线安装最新版本Podman-4.1.1版本。 当前容器的发展,对Docker逐渐远离,拥抱Containerd和Podman,目前Podman操作基本与Docker一致,让用户从Docker迁移至Podman成为了可能。 由于CentOS7.9默认安装的都是...
centos7.6离线安装nginx
CentOS7离线安装oracle 11g_r2所有离线依赖包,并附详细安装说明,安装详细说明和依赖包,轻松在CentOS7安装oracle
CentOS 6.4安装(超级详细图解教程) 说明: 1、CentOS 6.4 系统镜像有两个,安装系统只用到第一个镜像即 CentOS-6.4-i386-bin-DVD1.iso(32 位) 或者 CentOS-6.4-x86_64-bin-DVD1.iso(64 位),第二个镜像是...
centos7离线安装http服务器的rpm包
centos7离线安装gcc-c++
Centos 下 netflow安装配置--安装nfsen
centos7.0安装mysql centos7.0安装mysql centos7.0安装mysql
Java项目centos7 环境安装笔记 java环境搭建:jdk下载安装,tomcat下载安装 redis下载安装,nginx下载安装
centos7离线源码安装make
centos7亲测安装成功,摘自网上一个帖子,忘了出处,若有人知道望告知,添加链接,谢谢!
centOS7离线安装python3.10运行环境rpm依赖 大概300多个rpm,个别有重复不影响使用 gcc-objc++-4.8.5-44.el7.x86_64 grub2-2.02-0.86.el7.centos.x86_64 等
CentOS7下安装oracle11g具体步骤
centos7自带的中文输入法非常难用,在centos7上面安装sougou输入法,