Red Hat Training

A Red Hat training course is available for RHEL 8

第35章 SystemTap のクロスインストルメンテーション

SystemTap のクロスインストルメンテーションは、あるシステムで SystemTap スクリプトから SystemTap インストルメンテーションモジュールを作成し、SystemTap が完全にデプロイされていない別のシステムで使用します。

35.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 モジュールは host system 上に構築され、ターゲットシステムターゲットカーネル に読み込まれます。
ホストシステム
このシステム上で (SystemTap スクリプトから) インストルメンテーションモジュールがコンパイルされ、target systems に読み込まれます。
ターゲットシステム
このシステム内で (SystemTap スクリプトから) インストルメンテーションモジュールが構築されます。
ターゲットカーネル
ターゲットシステム のカーネル。これは、インストルメンテーションモジュール を読み込み、実行するカーネルです。