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
このページには機械翻訳が使用されている場合があります (詳細はこちら)。