第38章 SystemTap のクロスインストルメンテーション
SystemTap のクロスインストルメンテーションは、あるシステムで SystemTap スクリプトから SystemTap インストルメンテーションモジュールを作成し、SystemTap が完全にデプロイされていない別のシステムで使用します。
38.1. SystemTap のクロスインストルメンテーション
ユーザーが SystemTap スクリプトを実行すると、そのスクリプトからカーネルモジュールが構築されます。次に SystemTap はモジュールをカーネルに読み込みます。
通常、SystemTap スクリプトは SystemTap がデプロイされているシステムでのみ実行できます。SystemTap を 10 台のシステムで実行するには、このようなすべてのシステムに SystemTap をデプロイする必要があります。場合によっては、これは実現不可能または推奨されない場合があります。たとえば、企業のポリシーで、特定のマシンにコンパイラーやデバッグ情報を提供するパッケージのインストールが禁止されている場合には、SystemTap のデプロイメントができなくなります。
この状況を回避するために、クロスインストルメンテーション を使用します。クロスインストルメンテーションとは、あるコンピューターの SystemTap スクリプトから SystemTap インストルメンテーションモジュールを生成して、別のシステムで使用するプロセスです。このプロセスには、以下のような効果があります。
各種マシンのカーネル情報パッケージを単一のホストマシにインストールできる。
重要カーネルのパッケージ化にバグがあると、インストールが妨げられる場合があります。このような場合に ホストシステム と ターゲットシステム の
kernel-debuginfo
およびkernel-devel
パッケージが同じでなければなりません。バグが発生した場合は、https://bugzilla.redhat.com/ でバグを報告します。生成された SystemTap インストルメンテーションモジュール (
systemtap-runtime
) を使用するには、ターゲットマシン ごとインストールする必要があるパッケージは 1 つだけです。重要構築された インストルメンテーションモジュール が機能するには、ホストシステム と ターゲットシステム が同一アーキテクチャーで同じ Linux ディストリビューションを実行している必要があります。
- インストルメンテーションモジュール
- SystemTap スクリプトから構築したカーネルモジュール。SystemTap モジュールは ホストシステム 上に構築され、ターゲットシステム の ターゲットカーネル に読み込まれます。
- ホストシステム
- ターゲットシステム に読み込めるように (SystemTap スクリプトから) インストルメンテーションモジュールをコンパイルするシステム。
- ターゲットシステム
- (SystemTap スクリプトから) インストルメンテーションモジュール を構築するシステム。
- ターゲットカーネル
- ターゲットシステム のカーネル。インストルメンテーションモジュール を読み込み、実行するカーネルです。