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