Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第3章 SystemTap の作動方法

SystemTap を使うとユーザーはシンプルなスクリプトを作成および再使用して、実行中の Linux システムのアクティビティーを徹底的に調べることができます。このスクリプトは、データを抽出し、フィルターをかけ、素早く安全にデータをまとめるように設計できます。これにより、複雑なパフォーマンス (または機能的な) 問題の診断が可能になります。
SystemTap スクリプトにおける本質的な考えは、イベント に名前を付け、それに ハンドラーを与えることです。SystemTap がスクリプトを実行すると、SystemTap はイベントを監視します。イベントが発生したら、Linux カーネルがハンドラーをサブルーチンとして実行し、その後に通常の動作を再開します。
イベントには関数の開始/終了、タイマーの有効期限切れ、セッション終了など数種類のものがあります。ハンドラーは一連のスクリプト言語のステートメントで、イベント発生時に実行する作業を指定します。この作業には通常、イベントコンテキストからのデータ抽出、それらの内部変数への保存、結果のプリントなどが含まれます。

3.1. アーキテクチャー

SystemTap のセッションは、SystemTap スクリプトを実行すると始まります。このセッションは、以下の順番で生じます。

手順3.1 SystemTap セッション

  1. SystemTap はまず、使用されている tapset について既存の tapset ライブラリー (通常は /usr/share/systemtap/tapset/) に対してスクリプトをチェックします。次に SystemTap は、見つかった tapset を tapset ライブラリー内の対応する定義で置き換えます。
  2. SystemTap はスクリプトを C に変換し、システム C コンパイラーを実行してそこからカーネルモジュールを作成します。このステップを実行するツールは、systemtap パッケージに含まれています (詳細は 「SystemTap のインストール」 を参照してください)。
  3. SystemTap はモジュールを読み込み、スクリプト内の全プローブ (イベントおよびハンドラー) を有効にします。systemtap-runtime パッケージ (詳細は 「SystemTap のインストール」 を参照) 内の staprun は、この機能を提供します。
  4. イベントが発生すると、それに対応するハンドラーが実行されます。
  5. SystemTap セッションが終了すると、プローブは無効になり、カーネルモジュールは読み込み解除されます。
このステップは、コマンドラインプログラム stap で実行されます。このプログラムは、SystemTap のメインのフロントエンドツールです。stap の詳細は、(SystemTap がマシンに適切にインストールされてから) man stap を参照してください。