DTrace ユーザーガイド

アーキテクチャーの概要

DTrace の機能は、次のコンポーネントで構成されています。

DTrace プロバイダ

プロバイダは、システムを計測する方法を示すものです。プロバイダは、DTrace フレームワークでプローブを使用できるようにします。DTrace はプロバイダに、プローブをいつ有効にするかという情報を送信します。プローブが有効にされて起動すると、プロバイダから DTrace に制御が移ります。

プロバイダは、カーネルモジュールのセットとしてパッケージ化されています。各モジュールは、特定の種類の計測機能を実行することにより、プローブを生成します。各プロバイダは、DTrace の使用時に、DTrace フレームワークに提供可能なプローブを発行できます。いずれかのプローブを発行したら、トレースアクションを有効にして、プローブに結合できます。

一部のプロバイダは、ユーザーからのトレース要求に基づいて、プローブを新規作成できます。

DTrace プローブ

プローブには、次の属性があります。

この 4 つの属性のセットが、各プローブを一意に識別するプローブ指定子となります。次の形式で指定します。provider:module:function:name。各プローブには、一意の整数値 ID も割り当てられています。

DTrace の述語

述語とは、スラッシュ (/ /) で囲まれた式です。プローブの起動時に述語の評価が行われ、関連アクションを実行するべきかどうかが決定されます。述語は、D プログラムでより複雑な制御フローを構築するために使用する主要な条件構文です。すべてのプローブで、プローブ節の述語部分は省略可能です。述語部分を省略した場合、そのプローブの起動のたびに指定のアクションが実行されます。

述語式では、任意の D 演算子を使用できます。述語式は、変数、定数などの D データオブジェクトを参照します。述語式の評価結果は、整数型またはポインタ型の値にする必要があります。すべての D 式と同じく、ゼロ値は偽、ゼロ以外の値は真と解釈されます。

DTrace アクション

アクションは、カーネル内で DTrace 仮想マシンが実行する文であり、ユーザーによるプログラムが可能です。アクションには、次のような性質があります。

D スクリプト言語

単純な関数の場合、コマンド行から直接 dtrace コマンドを使用して、DTrace フレームワークを呼び出すことができます。DTrace を使ってより複雑な関数を実行する場合は、D スクリプト言語でスクリプトを作成します。DTrace で使用する特定のスクリプトをロードする場合は、-s オプションを使用します。D スクリプト言語の使用方法については、第 3 章「D 言語を使ったスクリプトの作成」を参照してください。