DTraceは、Solarisオペレーティング・システム(Oracle Solarisと呼ばれています)で使用するために最初に開発された包括的な動的トレース機能で、その後Oracle Linuxに移植されます。 DTraceによって、システムの動作を調査し、その動作状況のよりよい把握、ソフトウェアの多くのレイヤー全体にわたるパフォーマンス問題の検出、または異常な動作の原因の特定を行うことができます。
DTraceを使用すると、事前に計測した目的の場所(プローブと呼ばれる)で、カーネル・プログラムおよびユーザー空間プログラムにデータを記録できます。 プローブは、DTraceがアクションのセット(スタック・トレース、タイムスタンプまたは関数の引数の記録など)を実行するためのリクエストをバインドできる場所です。 プローブは、情報を記録できるプログラム可能なセンサーのように動作します。 プローブがトリガーされると、DTraceは、Dスクリプトで指定したデータを収集し、このデータを自分にレポートします。
DTraceのDプログラミング言語を使用すると、システム・プローブを問い合せて、自分が作成する可能性のある任意の数の質問に対する迅速で簡潔な回答を得ることができます。
Dプログラムには、1つ以上の指定されたプローブがトリガーされた場合に行われるアクションを記述します。 プローブは、プローブを公開したDTraceプロバイダの名前、プローブが存在するモジュール(またはライブラリ、ユーザー・スペース・プログラム)の名前、プローブが存在する関数の名前、およびプローブ自体の名前(通常、トレースできる操作または機能を示しています)によって一意に指定します。 プローブを正確に指定する必要はないため、様々なプローブで同じアクションをDTraceが実行できるようにします。 D言語における単一プローブの完全で明示的な表現の形式は次のとおりです:
PROVIDER
:MODULE
:FUNCTION
:NAME
dtraceコマンドを使用してDプログラムを実行する場合は、D言語のコンパイラを起動します。 DTraceは、Dプログラムを安全な中間形式にコンパイルしたときに、実行のためにオペレーティング・システム・カーネルのDTraceモジュールに送信します。 DTraceモジュールは、プログラムで指定したプローブをアクティブ化し、プローブの起動時に関連付けられているアクションを実行します。 DTraceでは、Dプログラムの実行中に発生する可能性があるすべてのランタイム・エラー(ゼロの除算、無効なメモリーの参照解除など)が処理され、レポートされます。
Oracle LinuxでのDTraceの詳細な説明(すべてではない場合)のほとんどで頻繁に参照される2種類のモジュールがあります。 混乱を避けるため、モジュールのどの種類のモジュールについて言及しているかを特定する必要があります。 モジュールのこのような種類について知っていると、コンテキストは通常は多くの手がかりを与えてくれます。
順序PROVIDER
:MODULE
:FUNCTION
:NAME
で説明するモジュールは、コードの領域を参照および表現するためにDTraceで使用される個別の手順付きコンポーネントであるという意味で、モジュールを参照します。 DTraceモジュール参照が一部のコードまたは機能のセットを指すように指定できます。 dtrace コマンドからの出力では、MODULE
を使用して、カーネル内やユーザー空間プログラム内で、このようなコード領域でなんらかのアクティビティが発生したことが伝えられます。 このタイプのモジュールは、単にDTraceモジュールと呼ばれます。
モジュール という用語の2つ目の意味は、Linuxカーネル・モジュールです。 Linuxカーネルは、モジュールと呼ばれる異なる機能コンポーネントに分割されます。これらのモジュールは、相互にロードおよびアンロードされる可能性があります。 lsmod コマンドの出力には、システムにロードされているLinuxカーネル・モジュールが示されます。 これらのモジュールは、Linuxカーネル・モジュール、またはLinuxのみを説明するコンテキストでは、単にカーネル・モジュールと呼ばれます。
次に、他のモジュール参照のその他の2つのバリエーションを示します:
LinuxシステムでDTraceを使用するには、DTrace固有の一部のLinuxカーネル・モジュールが存在している必要があります。 これらの特定のカーネル・モジュールは、明示的にdtraceカーネル・モジュールとして参照されます。 特定の
dtrace
カーネル・モジュールから使用できるプロバイダのリストは、第1.3項、「DTraceプロバイダについて」の表を参照してください。DTraceがカーネル・モジュールのアクティビティを監視するには、プローブをカーネル・モジュールにコンパイルする必要があります。 ただし、DTraceプローブのカーネル・モジュールは
dtrace
カーネル・モジュールではなく、DTrace対応カーネル・モジュールと呼ばれます。 DTraceで暗黙的にトレース可能なすべてのカーネル・モジュールは、DTraceが有効なカーネル・モジュールであるため、通常はDTrace対応のカーネル・モジュールとは呼ばれませんが、短いカーネル・モジュールです。
DTraceによる破壊アクションの実行を明示的に許可しないかぎり、オペレーティング・システムまたはシステムで実行されているプロセスが不注意に損傷するような安全でないプログラムは構築できません。 これらの安全機能により、システムのクラッシュや破損を気にせずに本番環境でDTraceを使用できるようになります。 プログラミング上の間違いがあると、DTraceによってエラーがレポートされ、プログラムのプローブが非アクティブ化されます。 その後、プログラムを修正して再試行できます。
DTraceの使用の詳細は、「Oracle® Linux: DTraceガイド」で入手できます。