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 でプローブするカーネルが現在使用中である場合 n には、インストールが成功したかどうかを確認します。

    # 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 は、指定のイベントを検出しました (この場合、VFS の読み取り)。
    3
    SystemTap が有効なハンドラーを実行しました (テキストを出力した後、エラーなしで閉じました)。