Red Hat Training

A Red Hat training course is available for RHEL 8

37.2. 安装 SystemTap

要开始使用 SystemTap,请安装所需的软件包。要在安装多个内核的内核上使用 SystemTap,为每个内核版本安装对应的内核软件包。

先决条件

流程

  1. 安装所需的 SystemTap 软件包:

    # yum install systemtap
  2. 安装所需的内核软件包:

    1. 使用 stap-prep

      # stap-prep
    2. 如果 stap-prep 无法正常工作,请手动安装所需的内核软件包:

      # yum install kernel-debuginfo-$(uname -r) kernel-debuginfo-common-$(uname -i)-$(uname -r) kernel-devel-$(uname -r)

      $ (uname -i) 会自动替换为您系统的硬件平台,$ (uname -r) 会自动替换为正在运行的内核的版本。

验证步骤

  • 如果当前使用 SystemTap 探测内核,请检查您的安装是否成功:

    # stap -v -e 'probe kernel.function("vfs_read") {printf("read performed\n"); exit()}'

    成功 SystemTap 部署会生成类似如下的输出:

    Pass 1: parsed user script and 45 library script(s) in 340usr/0sys/358real ms.
    Pass 2: analyzed script: 1 probe(s), 1 function(s), 0 embed(s), 0 global(s) in 290usr/260sys/568real ms.
    Pass 3: translated to C into "/tmp/stapiArgLX/stap_e5886fa50499994e6a87aacdc43cd392_399.c" in 490usr/430sys/938real ms.
    Pass 4: compiled C into "stap_e5886fa50499994e6a87aacdc43cd392_399.ko" in 3310usr/430sys/3714real ms.
    Pass 5: starting run. 1
    read performed 2
    Pass 5: run completed in 10usr/40sys/73real ms. 3

    输出的最后三行(以 Pass 5 开始)代表:

    1
    SystemTap 已成功创建了检测机制,以探测内核并运行检测程序。
    2
    SystemTap 检测到指定的事件(本例中为 VFS 读取)。
    3
    SystemTap 执行有效的处理程序(打印的文本,然后关闭它且无错误)。