第12章 SystemTap

SystemTap は、ユーザーがインストルメント化、再コンパイル、インストール、および再起動を行わずに、システム全体のアクティビティーを監視できる追跡およびプロービングツールです。これはカスタムスクリプト言語でプログラミングできます。これにより、(トレース、フィルタリング、分析)、到達 (実行中のカーネルおよびアプリケーションを調べるために) 表現性を提供します。

SystemTap は、カーネルまたはアプリケーション内の関数呼び出し、タイマー、トレースポイント、パフォーマンスカウンターなど、さまざまなタイプのイベントを監視できます。一部のサンプルスクリプトは、Some included example scripts produce output similar to netstatpstopiostat などの出力を生成するものもあります。これには、pretty-printed function callgraph トレースや、セキュリティーバグを操作するツールが含まれます。

Red Hat Developer Toolset には SystemTap 4.4 が同梱されています。このバージョンは、以前のリリースの Red Hat Developer Toolset に含まれるバージョンよりも新しいもので、バグ修正および機能拡張が追加されています

表12.1 Red Hat Developer Toolset の SystemTap に分散したツール

名前説明

stap

プローブ命令を C コードに変換し、カーネルモジュールを構築して、実行中の Linux カーネルに読み込みます。

stapdyn

SystemTap 用の Dyninst バックエンド。

staprun

stap ユーティリティーでビルドされたカーネルモジュールをロード、アンロード、アタッチ、切断します。

stapsh

SystemTap のリモートシェルとして機能します。

stap-prep

SystemTap の実行に必要なカーネル情報パッケージを判断して、可能であればダウンロードします。

stap-merge

CPU ファイルごとのマージ。このスクリプトは、-b コマンドラインオプションで stap ユーティリティーを実行すると自動的に実行されます。

stap-report

SystemTap のバグを報告するために、システムに関する重要な情報を収集します。

stap-server

stap クライアントからのリクエストをリッスンするコンパイルサーバー。

12.1. SystemTap のインストール

Red Hat Developer Toolset SystemTap は、devtoolset-10-systemtap パッケージで提供され、「Red Hat Developer Toolset のインストール」 の説明に従って devtoolset-10-perftools で自動的にインストールされます。

インストルメンテーションを Linux カーネルに配置するために、SystemTap ではデバッグ情報を含む追加パッケージをインストールする必要がある場合があります。インストールするパッケージを確認するには、以下のように stap-prep ユーティリティーを実行します。

$ scl enable devtoolset-10 'stap-prep'

このコマンドを root ユーザーとして実行すると、このユーティリティーが自動的にインストール用のパッケージを提供することに注意してください。システムにこのパッケージをインストールする方法は、Red Hat Enterprise Linux 7 SystemTap ビギナーズガイドを参照してください。