|
INSIDE TECHNOLOGY
Dynamic Tracing(DTrace)でアプリケーションのパフォーマンスを強化
Solaris 10 オペレーティングシステムは、既存機能を全面的に改良しているほか、新しいテクノロジを数多く盛り込んでいます。改良点は全て、顧客側のコスト、複雑性、リスクの低減を支援することを目的としています。EduConnectionの前号では、こうしたテクノロジのひとつであるSolaris Containerを取り上げました。今回のテーマは、Dynamic Tracing(DTrace)機能です。
DTrace
システムが致命的でないエラーや標準を下回るパフォーマンスを示す場合、分散型ソフトウェア環境の複雑性により、根本原因の正確な分析が極端に難しくなることがあります。ロードができない、またはピーク時になるといつも契約したサービス・レベルを満たせなくなるなどといった一時的な障害は、システム活動をよく観察し、問題を分析することで解決する可能性があります。
一時的な障害をデバッグし、パフォーマンスを調整する従来の方法では、障害後のクラッシュ・ダンプ・ファイルを検討し、試行錯誤で調整していました。しかしこうした方法は、時間がかかるだけでなく、根本原因が見つからなければ問題を完全に解決することができません。その結果、多くのアプリケーションのパフォーマンス・レベルは、最適なレベルにほど遠いものになっているのです。
新しいSolarisのDynamic Tracing(DTrace)機能は、パフォーマンスを最大化するよう開発者が直ちにアプリケーションを調整し、システムやアプリケーションの問題の根本原因をすばやく特定できるようにする強力なツールです。従来の方法では数日ないしは数週間かかっていたタスクが、通常数時間ないし数分で完了するようになります。DTraceはシンプルで初心者とベテランいずれの開発者にも対応でき、コスト、複雑性、及びリスクの削減に大いに役立ちます。
コスト |
システムやアプリケーションのパフォーマンスのボトルネック解決にかかる時間を、日単位から時単位に短縮することができ、人件費を節約できます。さらにDTraceでは、2つの方向からハードウェア・コストを削減できます。
まず、アプリケーション・パフォーマンスの改善により、ハードウェアをアップグレードしなくても成長の余地が生まれます。またDTraceは生産システム上で安全に使用できるため、実質的に別のテスト環境を展開する必要性がなくなります。 |
複雑性 |
DTraceはソフトウェア・スタックを一度に表示できるため、トレース・プロセスが大幅に単純化され、開発者はスレッドがカーネル・スペースとユーザ・ランドの間を横切っても、スレッドをトレースすることができます。
|
リスク |
DTraceは、現状のアプリケーションに動作します。DTraceセッションの実行中またはその前後のアプリケーションの修正、デバッグ機能のインストール、OSの再起動、アプリケーションの再起動などは不要です。
開発者はDTraceを使用してSolaris 10 オペレーティングシステム上のアプリケーションを分析・調整し、さらにパフォーマンス調整機能をほとんど変えずに、旧バージョンのSolaris OS上でそれらのアプリケーションを展開または再展開することができます。
|
|
それらのビジネス・アプリケーション開発の意義は、第一により高度なパフォーマンスと安定性を備えた高品質ソリューションを提供することにあります。ITサービス提供組織では、これはCPUサイクルを有効に使うことにより、システム・リソースの利用度を高めることを意味します。
可視性の強化
SolarisのDTrace機能は、Java Virtual Machineで実行する場合にも、アプリケーションとカーネル活動の双方で、動的な装備とトレースを実現します。Dtraceにより、開発者はシステム全体を調査して、システムの動作状態を知り、多数のソフトウェア層でパフォーマンスをトレースし、異常動作の原因を突き止めることができます。カスタム・スクリプトを作って動的にシステムを装備し、DTrace Dプログラミング言語で公式化された任意の質問に対し、迅速かつ簡潔に応答することも可能です。
トレースは、オペレーティングシステムのカーネルとユーザ・プロセスを動的に修正して、当該箇所(プローブ)で追加データを記録することにより、実行します。プローブは、DTraceが要求を結んで、スタック・トレース、タイムスタンプ、または関数の引数の記録など、一連のアクションを実行できる場所または活動を指します。
プローブは、Solaris OS全体の重要な場所に散らばったプログラム可能なセンサーのようなものです。当該エリアを調査するために、ユーザは適切なセンサーをオンにし、当該情報を記録するようプログラムします。さらに、各プローブが始動すると、DTraceはプローブからデータを収集し、記録します。プローブにアクションを指定しなければ、DTraceはプローブが始動するたびにトレースを行います。
DTraceのプローブは、プロバイダと呼ばれるカーネル・モジュールに由来します。各プロバイダは、プローブを有効化する特別なタイプの装備の実行方法を知っています。DTraceを実行すると、D言語のコンパイラが始動し、ユーザが要求したプローブを探して、プローブの有効化に必要な装備について、プロバイダからデータを収集します。
プロバイダは、プローブに関するシステムレベルの情報を保存して、プローブが有効化したときにユーザがアクションの実行を要求できるようにし、DTrace機能がその要求の装備を動的に実行できるようにしておきます。例えばプローブが有効化するたびに、DTraceが特定の変数の値を発行するようユーザが要求すれば、DTraceは要求されたアクションを実行して、プローブが有効化するたびにデータを収集します。
開発者はDTraceのDプログラムを使用して、自身のカスタマイズしたトレース・アクションをSolarisカーネル内の30,000以上のプローブのいずれかに結び付け、Solaris OS上で実行するアプリケーション・コードの任意のラインに装備することができます。
リスクの低減
DTraceはもともと生産システム上で実行するために設計されたもので、安定性と諸経費の少なさが特長です。ユーザが動的にプローブをオンにしたりオフにしたりでき、オペレーティングシステムの再起動やその他の設定、アプリケーションの無効化や変更、ユーザやクライアントの接続の変更などが必要ないため、リスクが低減されています。DTraceはさらにプログラム可能で、分析のルーチンを書き込み、再利用することができます。
DTrace実行環境は自身のエラー処理を実行し、Solaris OS内部にすでに存在する所定のプローブを使用するため、安全性が高くなります。0による除算や無効なメモリの参照などのDプログラムの実行時エラーは、直接DTraceが管理します。こうしたエラーの発生時には、DTraceはエラーを報告し、装備を無効化して、開発者がミスを訂正して再試行できるようにします。
その結果、Solarisカーネルや、システム上で実行しているユーザ・プロセスのひとつがDTraceによってダメージを受けるような、安全性の低いプログラムを開発者が作成することはなくなります。これらの安全機能により、システムのクラッシュや破損を恐れることなく、DTraceを生産環境で使用することができるのです。
トレースのパフォーマンス・ペナルティを事実上解消
DTraceは常に利用可能で使える状態にありますが、使用時以外はシステム・パフォーマンスへの影響はありません。DTraceの装備は全て、完全に動的です。プローブは、ユーザから具体的に呼び出されたときのみ、個別に有効化されます。アクティブでないプローブに装備されたコードは存在しないため、DTraceを使用していないときには、パフォーマンス低下は一切ありません。DTraceコマンドが存在するようになると、使用されたプローブは全て自動的に無効化され、その装備は削除されて、システムを正確に元の状態に戻します。
DTraceの装備は、さらに効率性を最大限に高めるよう設計されています。DTraceを実行すると、各プローブの装備が実行中のシステム上で動的に機能します。システムが中断することはなく、装備コードは有効化されたプローブのみに追加されます。その結果、DTraceを使用するプローブの効果は、正確にDTraceに命じられたものに限定され、無関係なデータがトレースされることはありません。
DTraceで成功を
サンはDTraceにより、Solaris OSと顧客のビジネス・アプリケーションの双方のカーネル機能のパフォーマンスを改善してきました。例えば、ある顧客のビジネスに不可欠な取引アプリケーションでは、DTraceをライブ・システムで実行し、顧客がスケーラビリティのないメモリ・アロケータを使用したために生じたボトルネックを、迅速に突き止めることができました。よりスケーラブルなバージョンのコンポーネントに置き換えることで、パフォーマンスは1000パーセント増加しました。
これだけの規模の改善は、システム全体のコストを大幅に引き下げるだけでなく、1日に処理されるトランザクションの数にも直接影響を与え、トップレベルの収益を実現します。
DTraceは、Solaris 10 オペレーティングシステムを実行する全ての開発者と顧客にとって、これまでどのカーネル開発者がパフォーマンス分析に使用していたものよりも強力なツールになります。所有するシステムの動作状況を知る高度な可観測性が、その機能を高めています。すなわち、より高品質なアプリケーションの開発、コスト削減、及びダウンタイムの短縮が実現し、既存リソースの利用度を高めてROIを改善できるのです。
DTraceに関する詳細は、Webinar(ウェビナー、インターネット上のセミナー:英語)をご覧ください。
ページ先頭へ
|