このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。

機械翻訳について

11.5 DTraceのプログラミングについて

dtraceコマンドを使用する場合、D言語のコンパイラを起動します。 DTraceでコンパイルされたプログラムは、実行のためにオペレーティング・システム・カーネルに送信され、そこでプログラムが使用するプローブがアクティブ化されます。

DTraceでプローブが有効になるのは、それらが使用される場合のみです。 アクティブではないプローブにインストゥルメンテーション・コードは存在しないため、DTraceを使用していない場合にシステムでパフォーマンスの低下は発生しません。 Dプログラムが終了すると、使用されていたすべてのプローブは自動的に無効になり、そのインストゥルメンテーションは削除され、システムは元の状態に戻ります。 DTraceがアクティブではないシステムとDTraceソフトウェアがインストールされていないシステムとの間に有効な差異は存在しません。

DTraceでは、オペレーティング・システムの実行中に、各プローブのインストゥルメンテーションを動的に実装します。 DTraceによってシステムが静止または一時停止されることはなく、インストゥルメンテーション・コードは有効になっているプローブにのみ追加されます。 結果として、DTraceプローブを使用することの効果は、DTraceに実行させる内容に厳密に制限されます。 DTraceのインストゥルメンテーションは、可能なかぎり効率的となるよう設計されており、本番環境で使用することで実際の問題をリアルタイムで解決できます。

DTraceフレームワークでは、任意の数の仮想クライアントがサポートされます。 希望する数のDプログラムを同時に実行することが可能で(これはシステムのメモリー容量によってのみ制限されます)、すべてのプログラムは基礎となる同じインストゥルメンテーションを使用して相互に独立して動作します。 この同じ機能によって、システム上の任意の数の個別ユーザーは、相互に干渉することなく同じシステム上で同時にDTraceを使用できます。

CまたはC++プログラムとは異なり、Javaプログラムとは同様に、DTraceは、プローブの起動時に実行する安全な中間形式にDプログラムをコンパイルします。 DTraceは、この中間形式を安全に実行できるかどうかを検証し、Dプログラムの実行中に発生する可能性のあるランタイム・エラー(0 (ゼロ)による除算や無効なメモリーの間接参照など)をレポートします。 結果として、安全ではないDプログラムを作成することはできません。 システムのクラッシュや破損を懸念することなく、本番環境でDTraceを使用できます。 プログラミング上の間違いがあると、DTraceによってインストゥルメンテーションが無効化され、エラーがレポートされます。

図11.1に、プローブ・プロバイダ、DTraceドライバ、DTraceライブラリおよびdtraceコマンドを含むDTraceアーキテクチャの様々なコンポーネントを示します。

図11.1 DTraceアーキテクチャのコンポーネント

この図は、カーネル領域にロードされてDTraceドライバと通信するプローブ・プロバイダ、ユーザー領域のDTraceライブラリ、およびDTraceライブラリにコールするdtraceコマンドを含むDTraceアーキテクチャの様々なコンポーネントを示しています。