3.3 Systemtap 内核空间探测
本节我们继续来学习 Systemtap 的使用 – 内核的动态追踪

1. 内核变量的获取
本节我们来看如何获取内核空间中的变量,包括:
- 目标变量获取
- 全局以及静态变量获取
- 内置的便捷变量
2. 内核变量获取
跟内核代码相关的事件,如kernel.function(“function”)和kernel.statement(“statement”),允许使用目标变量获取这部分代码中可访问到的变量的值。stap -L 可以列出特定探测点下可用的目标变量。
本节我们继续来学习 Systemtap 的使用 – 内核的动态追踪

本节我们来看如何获取内核空间中的变量,包括:
跟内核代码相关的事件,如kernel.function(“function”)和kernel.statement(“statement”),允许使用目标变量获取这部分代码中可访问到的变量的值。stap -L 可以列出特定探测点下可用的目标变量。
本节我们来看看 stap 脚本的基本语法。
SystemTap脚本运行时,会启动一个对应的SystemTap会话。整个会话大致流程如下:
tapsets是一些包含常用的探针和函数的内置脚本,你可以在SystemTap脚本中复用它们。当用户运行一个SystemTap脚本时,SystemTap会检测脚本中的事件和处理程序,并在翻译脚本成C代码之前,加载用到的tapset。
从今天开始我们将学习第一个可编程的动态追踪工具 Systemtap。本节是 Systemtap 的一个基本介绍。
动态追踪技术起源于 Solaris 系统的 DTrace。Dtrace 有 Linux Mac OS X 等系统的移植版,但是实现的都差强人意,不支持很多高级特性。Systemtap 是 Redhat 开源的 Linux 上的动态追踪工具,是 Linux 上目前最成熟的动态追踪框架。
今天我们来讲第二动态追踪技术 eBPF,eBPF 就是 Linux 版的 DTrace,可以通过 C 语言自由扩展。
eBPF 的工作原理如下图所示:

今天我们来讲解第一个动态追踪技术 DTrace, 它是动态追踪技术的鼻祖
Solaris 系统的 DTrace 是动态追踪技术的鼻祖,它提供了一个通用的观测框架,并可以使用 D 语言进行自由扩展。
上一节我们学习了 perf 的基本原理,对 perf 有了一个整体上的认识,本节我们来学如何使用 perf 进行性能分析。
我们将按照如下几个部分来介绍 perf 的使用:
