Solaris 動的トレースガイド

はじめに

DTrace は、Solaris™ オペレーティングシステムで使用する包括的な動的トレースフレームワークです。 管理者、開発者、サービス担当者は、DTrace の強力なインフラストラクチャを利用して、オペレーティングシステムやユーザープログラムの動作に関するさまざまな問題に簡潔に答えることができます。『Solaris 動的トレースガイド』では、DTrace を使ってシステムの動作を監視、デバッグ、チューニングする方法について説明します。本書には、バンドルされている DTrace 監視ツールと D プログラミング言語のリファレンスも含まれています。


注 –

このリリースでは、SPARC® および x86 系列のプロセッサアーキテクチャー (UltraSPARC®、SPARC64、AMD64、Pentium、Xeon EM64T) を使用するシステムをサポートします。サポートされるシステムについては、Solaris 10 Hardware Compatibility List (http://www.sun.com/bigadmin/hcl/) を参照してください。本書では、プラットフォームにより実装が異なる場合は、それを特記します。

本書では、「x86」という用語は AMD 64 あるいは Intel Xeon/Pentium 製品系列と互換性のあるプロセッサを使用して製造された 32 ビットおよび 64 ビットシステムを意味します。サポートされるシステムについては、Solaris 10 Hardware Compatibility List を参照してください。


対象読者

DTrace は、システムの動作を把握したいと考えているユーザーにとって理想的なツールです。DTrace は、Solaris に組み込まれた包括的な動的トレース機能です。DTrace の機能を利用して、ユーザープログラムの動作を検査できます。また、DTrace の機能を利用して、オペレーティングシステムの動作を検査することもできます。DTrace は、システム管理者やアプリケーション開発者によって使用される機能であり、本稼働システム上での使用に適しています。DTrace には、システムの動作を調べる機能、複数のソフトウェア層でパフォーマンス上の問題を検出する機能、システムの異常な動作の原因を突き止める機能などがあります。これから見ていくように、DTrace では、システムを動的に計測し、DTrace D プログラミング言語で記述して任意の問題に対して簡潔な答えを迅速に導き出すような、独自のカスタムプログラムを作成することもできます。

Solaris ユーザーは、DTrace を使って、次の処理を実行できます。

Solaris の開発者や管理者は、DTrace を使って、次の処理を実行できます。

本書では、DTrace の使用に際して必要なあらゆる情報を提供します。C 言語のようなプログラミング言語、awk(1)perl(1) のようなスクリプト言語の基礎知識は、DTrace や D プログラミング言語について学習する上で役立ちます。しかし、こうしたプログラミング言語、スクリプト言語に関する専門知識は必須ではありません。プログラミングやスクリプト作成の経験がまったくないユーザーは、「関連情報」で紹介する参考書籍をお読みになることをお勧めします。

内容の紹介

第 1 章はじめにでは、DTrace の機能の概要を示し、D プログラミング言語の基本情報を提供します。第 2 章型、演算子、および式第 3 章変数、および第 4 章D プログラムの構造では、D の基本概念についてより詳しく説明し、D プログラムを動的計測プログラムとして使用する方法について説明します。これらの章は、すべてのユーザーを対象としています。

第 5 章ポインタと配列第 6 章文字列第 7 章構造体と共用体、および第 8 章型と定数の定義では、D 言語のその他の機能について説明します。そのほとんどは、C、C++、および JavaTM プログラマであればすでに知っている内容です。これらの章は、こうしたプログラミング言語に関する予備知識のないユーザーを対象としています。プログラミング上級者は、これらの章を飛ばして、次の章に進んでもかまいません。

第 9 章集積体第 10 章アクションとサブルーチンでは、DTrace の強力なデータ「集積」のための要素と、トレースに使用できる一連の組み込みアクションについて説明します。これらの章は、すべてのユーザーを対象としています。

第 11 章バッファーとバッファリングでは、データのバッファーに関する DTrace ポリシーと、こうしたポリシーの構成方法について説明します。この章は、D プログラムの構築と実行に精通してからお読みください。

第 12 章出力書式では、D の出力の書式設定アクションと、トレースデータの書式設定に関するデフォルトポリシーについて説明します。この章は、C の printf() 関数についての知識があれば、ざっと読むだけでかまいません。printf() についてまったく知識がない場合は、隅々まで注意してお読みください。

第 13 章投機トレースでは、データを「投機的に」トレースバッファーにコミットする DTrace 機能について説明します。この章は、考慮中の問題との関連性がまだ明らかでない段階でデータトレースを行う、DTrace のユーザーを対象としています。

第 14 章dtrace(1M) ユーティリティーでは、dtrace コマンド行ユーティリティーのリファレンス情報を提供します。この情報は、オンラインのマニュアルページに類似した内容です。本書で紹介するさまざまなコマンド行オプションの確認用としてご利用ください。第 15 章スクリプトの作成では、dtrace ユーティリティーを使って実行可能な D スクリプトを作成し、コマンド行引数を処理する方法について説明します。さらに、第 16 章オプションとチューニング可能パラメータでは、コマンド行または D プログラム内でチューニング可能なオプションについて説明します。

第 17 章dtrace プロバイダから第 32 章fasttrap プロバイダまでの各章では、Solaris システムのさまざまな局面を計測する場合に利用できる DTrace「プロバイダ」について説明します。これらの章はすべてのユーザーを対象としています。これらの章を通してさまざまなプロバイダについて大まかに学んだあと、必要に応じて各章を精読してください。

第 33 章ユーザープロセスのトレースでは、DTrace を使ってユーザープロセスを計測する例を紹介します。第 34 章ユーザーアプリケーション向けの静的に定義されたトレースでは、アプリケーションプログラマがカスタマイズした DTrace プロバイダとプローブをユーザーアプリケーションに追加する方法について説明します。これらの章は、ユーザープログラムの開発者や管理者で、DTrace を使ってユーザープロセスの動作を検査するユーザーを対象としています。

第 35 章セキュリティー以降の章では、DTrace のセキュリティ、バージョン管理、安定性の属性など、上級者向けのトピックを扱います。DTrace を使ったブート時および事後トレースの実行方法については、ここで学習します。これらの章は、DTrace の上級ユーザーを対象としています。

関連情報

以下に、DTrace の使用に際して参考となる関連書籍と論文を記載します。

Web 上の DTrace コミュニティー (http://www.sun.com/bigadmin/content/dtrace/ ) では、DTrace の利用経験やスクリプトをその他のユーザーと共有できます。

マニュアル、サポート、およびトレーニング

Sun の Web サイトでは、次のサービスに関する情報も提供しています。

表記上の規則

このマニュアルでは、次のような字体や記号を特別な意味を持つものとして使用します。

表 P–1 表記上の規則

字体または記号 

意味 

例 

AaBbCc123

コマンド名、ファイル名、ディレクトリ名、画面上のコンピュータ出力、コード例を示します。 

.login ファイルを編集します。

ls -a を使用してすべてのファイルを表示します。

system%

AaBbCc123

ユーザーが入力する文字を、画面上のコンピュータ出力と区別して示します。 

system% su

password:

AaBbCc123

変数を示します。実際に使用する特定の名前または値で置き換えます。 

ファイルを削除するには、rm filename と入力します。

『 』 

参照する書名を示します。 

『コードマネージャ・ユーザーズガイド』を参照してください。 

「 」 

参照する章、節、ボタンやメニュー名、強調する単語を示します。 

第 5 章「衝突の回避」を参照してください。 

この操作ができるのは、「スーパーユーザー」だけです。 

枠で囲まれたコード例で、テキストがページ行幅を超える場合に、継続を示します。 

 


sun% grep `^#define \

  XV_VERSION_STRING'

コード例は次のように表示されます。

[ ] は省略可能な項目を示します。上記の例は、filename は省略してもよいことを示しています。

| は区切り文字 (セパレータ) です。この文字で分割されている引数のうち 1 つだけを指定します。

キーボードのキー名は英文で、頭文字を大文字で示します (例: Shift キーを押します)。ただし、キーボードによっては Enter キーが Return キーの動作をします。

ダッシュ (-) は 2 つのキーを同時に押すことを示します。たとえば、Ctrl-DControl キーを押したまま D キーを押すことを意味します。