5 DTrace安定性のリファレンス

DTraceは、インタフェースの安定性とそのアーキテクチャの依存関係を追跡するメカニズムを提供します。このリファレンスでは、属性の格納方法と記述方法、およびその値について詳しく説明します。

DTraceインタフェース安定性の属性

DTraceでは、2つの安定性レベルと1つの依存クラスから構成される3つ組の属性を使用してインタフェースを記述します。慣例上、インタフェース属性は次の順序で記述し、各属性をスラッシュで区切ります。

name_stability / data_stability / dependency_class

インタフェースの名前の安定性は、Dプログラムまたはdtraceコマンドラインに表示されるときのインタフェース名の安定性レベルを表します。たとえばD変数のexecnameは、安定した名前です。

インタフェースのデータの安定性は、インタフェース名に伴う安定性とは区別されます。この安定性レベルは、インタフェースおよび関連するデータ・セマンティクスで使用されるデータ・フォーマットの維持の確実性を表します。

インタフェースの依存クラスは、名前やデータ安定性と区別され、このインタフェースが現在のオペレーティング・プラットフォームやマイクロプロセッサに固有であるかどうかを表します。

DTraceとDコンパイラは、すべてのDTraceインタフェース・エンティティ(プロバイダ、プローブ記述、D変数、D関数、型およびプログラム文)の安定性属性を追跡します。

安定性属性は、それぞれが三つ組みのインタフェース属性に対応する値から最小の安定性レベルとクラスを選択することで計算されます。

DTraceユーティリティでは、-vオプションを指定して実行することで、計算されたDプログラムの安定性を報告できます。-eオプションを使用して、DTraceがプログラムを実行しないようにして、レポートのみを提供するように出力を制限します。たとえば、次のコマンドを実行します。

sudo dtrace -ev -s myscript.d

次のような出力が表示されます。

Stability attributes for description dtrace:::BEGIN:

	Minimum Probe Description Attributes
		Identifier Names: Stable
		Data Semantics:   Stable
		Dependency Class: Common

	Minimum Statement Attributes
		Identifier Names: Stable
		Data Semantics:   Private
		Dependency Class: Common

dtrace:::BEGIN

	Probe Description Attributes
		Identifier Names: Stable
		Data Semantics:   Stable
		Dependency Class: Common

	Argument Attributes
		Identifier Names: Stable
		Data Semantics:   Stable
		Dependency Class: Common

	Argument Types
		None

属性の計算結果として、コマンドラインに指定した最小値未満の3つ組の属性が得られた場合に、Dコンパイラに強制的にエラーを返させるには、dtraceコマンドで-x amin=_attributes_オプションを使用します。属性は、安定性を記述するための標準表記法に従って、/で区切られた3つのラベルで指定します。次に例を示します:

sudo dtrace -x amin=Evolving/Evolving/Common -s myscript.d

プローブ記述の安定性属性は、プロバイダによって発行された属性に応じて、指定されたすべてのプローブ記述フィールドの最小の安定性属性をとることによって計算されます。DTraceプロバイダは、そのプロバイダが公開しているすべてのプローブの4つの記述フィールドそれぞれに対して、三つ組みの安定性属性をエクスポートします。そのため、プロバイダの名前の方が、このプロバイダでエクスポートされる各プローブよりも安定性が高い場合があります。簡略にするために、ほとんどのプロバイダは公開する個々のモジュール関数名の値すべてに対して単一の属性セットを使用します。プローブ引数の安定性はプロバイダごとに異なるため、プロバイダはargs[]配列の属性も指定します。

プローブ記述でプロバイダ・フィールドが指定されていない場合、この記述には「変更の可能性あり/変更の可能性あり/共通」の安定性が割り当てられます。これは、この記述が今後のリリースのOracle Linuxで使用されたとき、現在まだ存在しないプロバイダのプローブと照合される可能性があるためです。したがって、Oracleはこのプログラムの将来の安定性と動作については保証しません。Dプログラム節を記述する際は、常にプロバイダを明示的に指定します。また、パターン・マッチング文字や$1のようなマクロ変数を含むプローブ記述フィールドは、未指定として扱われます。これは、これらの記述パターンを展開すると、将来のDTraceやOracle Linuxでリリースされるプロバイダまたはプローブと照合される可能性があるためです。

安定性レベル

安定性レベルは、ソフトウェア・エンティティとDTraceインタフェースの安定性を示します。DTraceの安定性レベルは、ソフトウェア・スタックをアップグレードまたは変更したときに、Dプログラムと階層化ツールが対応する変更を必要とする可能性を示します。

安定性値 説明

内部

DTrace専用のインタフェースで、DTraceの実装の詳細を示します。「内部」インタフェースは、マイナー・リリースやマイクロ・リリースで変更される可能性があります。

非公開

Oracle専用のインタフェースであり、Oracleの他の製品のために開発されたインタフェースです。まだ顧客やISV (独立系ソフトウェア・ベンダー)向けに正式には文書化されていません。「非公開」インタフェースは、マイナー・リリースやマイクロ・リリースで変更される可能性があります。

廃止

現在のリリースでは使用可能ですが、将来的に、特にマイナー・リリースで削除される可能性のあるインタフェースです。「廃止」インタフェースを使用しようとすると、Dコンパイラから警告メッセージが出力されることがあります。

外部

このインタフェースはOracle以外によって管理されています。異なるリリース間での「外部」インタフェースのソースまたはバイナリ互換性について、Oracleはいっさい関与しません。これらのインタフェースに基づくアプリケーションは、「外部」インタフェースが含まれているパッチも含めて、将来のリリースでは動作しない可能性があります。

変更の可能性あり

このインタフェースにより、新規または変更するテクノロジや、システム動作の監視やデバッグに必要な実装アーティファクトに、開発者が早期にアクセスできます。「変更の可能性あり」インタフェースのマイナー・リリース間でのソースまたはバイナリ互換性について、Oracleはいっさい関与しません。

発展中

将来的に「標準」インタフェースまたは「安定」インタフェースになる可能性があるが、まだ過渡期にあるインタフェースです。上位互換性のない変更が必要な場合は、マイナー・リリースとメジャー・リリースで行われます。こうした変更は、マイクロ・リリースでは可能なかぎり回避されます。このような変更が必要な場合は、影響を受けるリリースのリリース・ノートに記載されます。また、実現可能な場合は、バイナリ互換性および継続的なDプログラムの開発のために移行支援が提供されます。

安定

完成したインタフェースです。

標準

業界標準に準拠したインタフェースです。このインタフェースに対応する文書には、準拠する標準の説明が記載されています。通常、標準は標準開発組織によって制御されます。標準に対する承認済の変更に従って、インタフェースを変更できます。この安定性レベルは、業界の慣例により、(正規標準なしで)採用されたインタフェースにも適用されます。可用性は、指定した標準のバージョンに対してのみ提供されます。新しいバージョンの可用性は保証されません。

依存クラス

依存性クラスは、DTrace内のインタフェースのアーキテクチャ依存性を記述するために使用されます。

依存クラス 説明

不明

アーキテクチャの依存関係が不明なインタフェースです。DTraceは、OS実装で定義されているデータ型など、すべてのエンティティについてアーキテクチャの依存関係を認識できるとはかぎりません。「不明」に分類されるのは通常、依存関係を計算できない、きわめて安定性の低いインタフェースです。現在使用中のアーキテクチャ以外でDTraceを使用するときには、このインタフェースが使用できない可能性があります。

CPU

現在のシステムのCPUモデル固有のインタフェースです。CPUモデル依存のインタフェースは、その他のCPU実装では使用できない可能性があります。同じ命令セット・アーキテクチャ(ISA)をエクスポートするCPUでも同様です。

プラットフォーム

現在のシステムのハードウェア・プラットフォーム固有のインタフェースです。プラットフォームは通常、システム構成要素とアーキテクチャの特性のセットを関連付けています。現在のプラットフォーム名を表示するには、uname -iコマンドを使用します。このインタフェースは、他のハードウェア・プラットフォームでは使用できない可能性があります。

グループ

現在のシステムのハードウェア・プラットフォーム・グループ固有のインタフェースです。プラットフォーム・グループは通常、関連する特性を1つの名前で一連のプラットフォームに関連付けます。現在のプラットフォーム・グループ名を表示するには、uname -mコマンドを使用します。このインタフェースは、現在のプラットフォーム・グループの他のプラットフォームで使用可能ですが、このグループのメンバーでないハードウェア・プラットフォームでは使用できない可能性があります。

ISA

このインタフェースは、現在のシステム上のマイクロプロセッサによって使用できるISAに固有です。ISAは、マイクロプロセッサ上で実行可能なソフトウェアの仕様(アセンブリ言語命令、レジスタなどの詳細情報を含む)について説明したものです。

共通

基礎となるハードウェアとは関係なく、すべてのOracle Linuxプラットフォームに共通のインタフェースです。「共通」インタフェースのみに依存するDTraceプログラムと階層化アプリケーションは、Oracle LinuxとDTraceのリビジョンが共通している他のOracle Linuxプラットフォームにデプロイして実行できます。大部分のDTraceインタフェースは「共通」インタフェースのため、Oracle Linuxを使用するときはいつでも使用できます。