Show Table of Contents
2.2. 他のコンピューター用のインストルメンテーション生成
ユーザーが SystemTap スクリプトを実行すると、そのスクリプトからカーネルモジュールが構築されます。すると SystemTap はそのモジュールをカーネルに読み込み、カーネルから直接指定されたデータを抽出できるようにします (詳細は、「アーキテクチャー」 の 手順3.1「SystemTap セッション」 を参照)。
通常、SystemTap スクリプトは (「インストールと設定」 にあるように) SystemTap がデプロイされているシステムでのみ、実行できます。つまり、SystemTap を 10 台のシステムで実行するには、これら すべての システムに SystemTap をデプロイする必要があります。場合によっては、これは実現不可能もしくは望ましくないこともあります。たとえば、企業のポリシーで管理者が特定マシンにコンパイラーやデバッグ情報を提供するパッケージのインストールを禁止されていれば、SystemTap のデプロイはできなくなります。
この状況を避けるためには、クロスインストルメンテーションを使用します。これは、1 台のコンピューター上の SystemTap スクリプトから別のコンピューターで使用する SystemTap インストルメンテーションモジュールを生成するプロセスです。このプロセスは、以下の利点をもたらします。
- 各種マシンのカーネル情報パッケージを単一のホストマシン にインストールできます。
- 生成された SystemTap インストルメンテーションモジュールを使用するために各ターゲットマシンにインストールする必要があるのは 1 つのパッケージ systemtap-runtime のみです。
重要
構築されたインストルメンテーションモジュールが機能するには、ホストシステムとターゲットシステムが同一アーキテクチャーで同じ Linux ディストリビューションを実行している必要があります。
注記
本セクションでは分かりやすくするために、以下の用語を使用します。
- インストルメンテーションモジュール
- SystemTap スクリプトから構築されるカーネルモジュールです。SystemTap モジュールはホストシステム上に構築され、ターゲットシステムのターゲットカーネルに読み込まれます。
- ホストシステム
- このシステム上で (SystemTap スクリプトから) インストルメンテーションモジュールがコンパイルされ、ターゲットシステム に読み込まれます。
- ターゲットシステム
- このシステム内で (SystemTap スクリプトから) インストルメンテーションモジュールが構築されます。
- ターゲットカーネル
- ターゲットシステムのカーネルです。このカーネルがインストルメンテーションモジュール の読み込み、実行を行います。
手順2.1 ホストシステムとターゲットシステムの設定
systemtap-runtimeパッケージを各ターゲットシステムにインストールします。- 各ターゲットシステムで
uname -rを実行して、ターゲットシステムで実行中のカーネルを確認します。 - SystemTap をホストシステムにインストールします。インストルメンテーションモジュールは、ホストシステム上でターゲットシステム用に構築されます。SystemTap のインストール方法については、「SystemTap のインストール」 を参照してください。
- 上記で判明したターゲットカーネルのバージョンを使用して、ターゲットカーネルと関連パッケージを 「必要なカーネル情報パッケージのインストール」 にある方法でホストシステムにインストールします。複数のターゲットシステムで異なるターゲットカーネルを使用している場合は、ターゲットシステムで使用しているカーネルごとにこのステップを繰り返します。
インストルメンテーションモジュールを構築するには、ホストシステムで以下のコマンドを実行します (適切な値を指定してください)。
stap -r kernel_version script -m module_name -p4
ここでの kernel_version は、ターゲットカーネルのバージョンを指します (ターゲットマシンで実行した
uname -r の出力)。script は、インストルメンテーションモジュールに変換されるスクリプトです。module_name は、希望する インストルメンテーションモジュールの名前です。
インストルメンテーションモジュールがコンパイルされたら、ターゲットシステム にコピーして、以下のコマンドを使用して読み込みます。
staprun module_name.ko
たとえば、
simple.stp という名前の SystemTap スクリプトから 3.10.0-327.4.4.el7 ターゲットカーネル に simple.ko という インストルメンテーションモジュールを作成するには、以下のコマンドを実行します。
stap -r 2.6.32-53.el6 -e 'probe vfs.read {exit()}' -m simple -p4
これで
simple.ko という名前のモジュールが作成されます。simple.ko インストルメンテーションモジュール を使用するには、これをターゲットシステムにコピーして、(ターゲットシステム上で) 以下のコマンドを実行します。
staprun simple.ko
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.