Red Hat Training

A Red Hat training course is available for RHEL 8

34.2. SystemTap のインストール

SystemTap の使用を開始するには、必要なパッケージをインストールします。システムに複数のカーネルがインストールされていて、それらのカーネル上で SystemTap を使用するには、each カーネルバージョン用に一致する必要なカーなネルパッケージをインストールします。

前提条件

手順

  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

    最後の 3 行の出力 (Pass 5 で始まる) は、以下を示しています。

    1
    SystemTap が、カーネルをプローブしてインストルメンテーションを実行するインストルメンテーションを正常に作成し、インストルメンテーションを実行しました。
    2
    SystemTap が、指定したイベント (この場合は A VFS 読み取り) を検出しました。
    3
    SystemTap が有効なハンドラーを実行しました (テキストを出力した後、エラーなしで閉じました)。