Solaris 動的トレースガイド

外部のシンボルと型

DTrace 計測機能は、Solaris オペレーティングシステムカーネルの内部で実行されます。このため、特殊な DTrace 変数やプローブ引数だけでなく、カーネルデータの構造、シンボル、および型にもアクセスできます。DTrace の上級ユーザー、管理者、サービス担当者、ドライバ開発者は、この機能を利用して、オペレーティングシステムカーネルやデバイスドライバの低レベルの動作を検査できます。Solaris オペレーティングシステムの内部構造については、このマニュアルの冒頭で紹介した関連書籍を参照してください。

D では、オペレーティングシステムには定義されているが、D プログラム内では定義されていないシンボルにアクセスする際、特別なスコープ演算子として逆引用符 (`) を使用します。たとえば、Solaris カーネルには、メモリーアロケータのデバッグ機能を有効にする、チューニング可能なシステム変数 kmem_flags の C 宣言が含まれています。kmem_flags の詳細は、『Solaris カーネルのチューンアップ・リファレンスマニュアル』を参照してください。このチューニング可能な変数は、次のように、カーネルソースコード内に C で宣言されています。

int kmem_flags;

この変数の値を D プログラム内でトレースする場合は、次のような D 文を記述します。

trace(`kmem_flags);

DTrace は、カーネルシンボルに、対応するオペレーティングシステム C コードで使用されている型を関連付けます。このため、ネイティブのオペレーティングシステムデータ構造に、ソースから簡単にアクセスできます。カーネルシンボル名は、D 変数および関数識別子とは別の名前空間に格納されています。したがって、カーネルシンボル名と D 変数名が競合することはありません。

この章では、DTrace の概要を把握し、より規模が大きく複雑な D プログラムを作成するために必要な DTrace の基礎知識を身に付けました。以降の章では、D の規則の全容を明らかにし、実際に DTrace を使って、複雑なパフォーマンス測定やシステム機能分析を単純化する方法を学んでいきます。さらに、DTrace を使ってユーザーアプリケーションの動作とシステムの動作を関連付け、ソフトウェアスタック全体を分析する方法についても学びます。

DTrace の学習は、まだ始まったばかりです。