41.2. 実装
SystemTap は、コンパイラー指向のアプローチを使用してインストルメンテーションを生成します。この説明で使用される SystemTap の全体的な図は、図41.1「SystemTap でのデータの流れ」 "Flow of data in SystemTap" を参照してください。ダイアグラムの右上隅にある probe.stp は、開発者が作成したプローブスクリプトです。これは、トランスレーターによって解析され、ツリーを解析します。この間、入力で構文エラーが確認されます。その後、トランスレーターが実行され、スクリプトライブラリーから追加のコードを取得し、デバッグ情報からプローブポイントと変数の場所を決定します。調査が完了すると、トランスレーターは C のカーネルモジュールである probe.c を生成できます。
probe.c ファイルは、GCC コンパイラーを使用して通常のカーネルモジュール probe.ko にコンパイルされます。コンパイルにより、ランタイムライブラリーからサポートコードがプルされる場合があります。GCC が probe.ko を生成すると、SystemTap デーモンが起動してインストルメンテーションモジュールの出力が収集されます。インストルメンテーションモジュールはカーネルに読み込まれ、データ収集が開始されます。インストルメンテーションモジュールからのデータは、relayfs を介してユーザー空間に転送され、デーモンによって表示されます。ユーザーが Control-C に到達すると、デーモンはモジュールをアンロードし、データ収集プロセスもシャットダウンします。
図41.1 SystemTap でのデータの流れ
[D]