2.2. 他のコンピューター用のインストルメンテーション生成


ユーザーが SystemTap スクリプトを実行すると、そのスクリプトからカーネルモジュールが構築されます。すると SystemTap はそのモジュールをカーネルに読み込み、カーネルから直接指定されたデータを抽出できるようにします (詳細は、「アーキテクチャー」手順3.1「SystemTap セッション」 を参照)。
通常、SystemTap スクリプトは (「インストールと設定」 にあるように) SystemTap がデプロイされているシステムでのみ実行できます。つまり、SystemTap を 10 台のシステムで実行するには、これら すべての システムに SystemTap をデプロイする必要があります。場合によっては、これは実現不可能もしくは望ましくないこともあります。たとえば、企業のポリシーで管理者が特定マシンにコンパイラーやデバッグ情報を提供する RPM のインストールを禁止されていれば、SystemTap のデプロイはできなくなります。
この状況を避けるためには、クロスインストルメンテーション を使用します。これは、1 台のコンピューター上の SystemTap スクリプトから別のコンピューターで使用する SystemTap インストルメンテーションモジュールを生成するプロセスです。このプロセスは、以下の利点をもたらします。
  • 各種マシンのカーネル情報パッケージを単一のホストマシン にインストールできます。
  • 生成された SystemTap インストルメンテーションモジュールを使用するために各 ターゲットマシン にインストールする必要があるのは 1 つの RPM systemtap-runtime のみです。

注記

本セクションでは分かりやすくするために、以下の用語を使用します。
  • instrumentation module — SystemTap スクリプトから構築されるカーネルモジュールです。SystemTap モジュールホストシステム 上に構築され、ターゲットシステムターゲットカーネル に読み込まれます。
  • ホストシステム — このシステム上で (SystemTap スクリプトから) インストルメンテーションモジュールがコンパイルされ、ターゲットシステム に読み込まれます。
  • ターゲットシステム — このシステム内で (SystemTap スクリプトから) インストルメンテーションモジュール が構築されます。
  • ターゲットカーネルターゲットシステム のカーネルです。このカーネルが インストルメンテーションモジュール の読み込み、実行を行います。

手順2.1 ホストシステムとターゲットシステムの設定

  1. ターゲットシステムsystemtap-runtime RPM をインストールします。
  2. ターゲットシステムuname -r を実行して、各 ターゲットシステム で実行中のカーネルを確認します。
  3. SystemTap を ホストシステム にインストールします。インストルメンテーションモジュール は、ホストシステム 上で ターゲットシステム 用に構築されます。SystemTap のインストール方法は、「SystemTap のインストール」 を参照してください。
  4. 上記で判明した ターゲットカーネル のバージョンを使用して、ターゲットカーネル と関連 RPM を 「必要なカーネル情報 RPM パッケージのインストール」 に説明されている方法で ホストシステム にインストールします。複数の ターゲットシステム で異なる ターゲットカーネル を使用している場合は、ターゲットシステム で使用しているカーネルごとにこのステップを繰り返します。
手順2.1「ホストシステムとターゲットシステムの設定」 が完了すると、(いずれの ターゲットシステム用の) インストルメンテーションモジュールホストシステム での構築が可能になります。
インストルメンテーションモジュール を構築するには、ホストシステム で以下のコマンドを実行します (適切な値を指定してください)。
stap -r kernel_version script -m module_name -p4
ここでの kernel_version は、ターゲットカーネル のバージョンを指します (ターゲットマシンで実行した uname -r の出力)。script は、インストルメンテーションモジュール に変換されるスクリプトです。module_name は、希望する インストルメンテーションモジュール の名前です。

注記

実行中のカーネルのアーキテクチャー表記を確認するには、uname -m を実行します。
インストルメンテーションモジュールがコンパイルされたら、ターゲットシステム にコピーして、以下のコマンドを使用して読み込みます。
staprun module_name.ko
たとえば、ターゲットカーネル 2.6.32-53.el6 用に simple.stp という名前が付けられた SystemTap スクリプトから インストルメンテーションモジュール simple.ko を作成するには、以下のコマンドを使用します。
stap -r 2.6.32-53.el6 -e 'probe vfs.read {exit()}' -m simple -p4
これで simple.ko という名前のモジュールが作成されます。インストルメンテーションモジュール simple.ko を使用するには、これを ターゲットシステム にコピーして、(ターゲットシステム 上で) 以下のコマンドを実行します。
staprun simple.ko

重要

構築された インストルメンテーションモジュール が機能するには、ホストシステムターゲットシステム が同一アーキテクチャーで同じ Linux ディストリビューションを実行している必要があります。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.