プローブビュー

軽量な動的トレース環境

ProbeVueは、 AIXバージョン6.1で導入された軽量な動的トレース環境のIBMによる実装です。 [1] ProbeVueは、実行中のプロセスをプローブして統計分析を行う機能と、プローブ対象のプロセスからデータを取得する機能を提供します。ProbeVueの動的性質により、単一のプロセスまたはスレッド上の非常に具体的なイベントをドリルダウンする機能を維持しながら、グローバルなシステムパフォーマンスツールとして使用できます。

プローブ対象のプロセス[2]やシステムを変更する必要がなく、トレースツールとしてのProbeVueの軽量設計により、従来のトレースツールではパフォーマンスが制限されていた生産環境での使用に適しています。

説明

ProbeVueは、プローブ可能な潜在的なイベントである一連のプローブポイント仕様を提供します。Vue言語で記述されたスクリプトを使用することで、ユーザーはアクションブロックと呼ばれるコードブロックであるプローブを定義できます。このアクションブロックは、システム上でこれらのイベントが発生した際に実行されます。アクションブロックの実行は、プローブに述語と呼ばれる条件文を配置することで、特定のイベントに限定できます。アクションブロック内のコードは、C言語に似た構文に従い、限られた数の組み込み関数が組み込まれています。

以下は、PID 123456 のプロセスが read()システムコールを実行するたびに実行されるプローブの例です。このイベントが発生すると、このスクリプトは組み込みの printf() 関数を呼び出して、出力トレースバッファにメッセージを出力します。アクションブロックの最初の行は C スタイルのコメントであるため、ProbeVue 環境では実行されません。

@@ syscall :*: read : entry 
when ( __pid == 123456 ) { /* これはコメントです: PID が 123456 のプロセスが read() を呼び出しました。 */ printf ( "read() システムコールに入りました。\n " ); }     

   
   

上記のサンプルのようなプローブは、実稼働システムで通常必要とされる大規模なテストを実施することなく、作成・実行できます。ProbeVue環境は、以前のIBMトレースツールでよく見られたような、誤ったコードやリソースを大量に消費するトレースからユーザーを保護します。ProbeVueのランタイムコンパイル機能は、データ収集のための 強力なアドホック環境を提供します。

プローブポイントの仕様

現在、IBM は、AIX 6.1 で、syscall、uft、interval、trace、および ProbeVue プローブ (BEGIN と END) というプローブ プロバイダーを提供しています。syscall プロバイダーは、使用可能なシステム コールのサブセットのプローブ ポイントを定義します。ユーザー関数トレース (uft) プローブは、CまたはC++プログラムで定義された関数のエントリー ポイントに定義できます。syscall プローブと uft プローブの両方で、関数パラメーター (エントリー プローブの場合) または戻り値 (syscall exit プローブの場合のみ) にアクセスする前に、Vue スクリプトに有効な関数プロトタイプを含める必要があります。interval プローブはタイマーで起動し、100 ミリ秒間隔で定義できます。trace プロバイダーを使用すると、ProbeVue は従来のトレース フックにアクセスできます。最後に、BEGIN および END と呼ばれる ProbeVue プローブは、probevue 環境自体の開始時と終了時に起動します。

Vue言語

ProbeVue はオペレーティング システム イベントを監視するツールとして設計されているため、Vue 言語では、これらのイベントから派生したデータの処理方法を記述するために使用される イベント ドリブンスタイルが使用されます。

他のUnix系OSで見られる多くの動的トレース言語と同様に、Vue言語はC言語に似た構文を持ち、この文脈で頻繁に使用されます。VueとC言語の関係には多くの類似点がありますが、最も大きく異なるのはC言語の命令型の性質です。ここでは、その相違点と類似点のいくつかを示します。[3]

データ型

ProbeVueは主にC言語で記述されたアプリケーションの監視に使用されるため、C言語のすべてのデータ型とC言語のデータ構造をサポートしています。Vueは文字列、リスト、タイムスタンプのデータ型もサポートしています。文字列とリストはどちらも実際には配列ですが、タイムスタンプはある時点の高解像度の表現です。混合型を扱う際の型キャストと自動型昇格もC言語の動作と同様です。

ProbeVue では、配列やデータ構造へのポインタは C プログラムと同じように動作しますが、C との主な違いは、ポインタがメモリ内の位置を参照する場合、別のプロセス空間内の位置を参照している点です。そのメモリにアクセスするには、まずメモリ位置をローカルの ProbeVue 環境にコピーする必要があります。メモリがページアウトされている場合、ProbeVue はページフォールトを強制してアクセスすることはできません。また、C ではポインタのサイズがコンパイル時に決定されるのに対し、ProbeVue ではプローブ対象のアプリケーションのビット数 (32 ビット64ビットか)によって決定される点も異なります。

浮動小数点データ型は、プローブされたプロセスからの割り当てには有効なデータ型ですが、浮動小数点の数学演算には使用できません。

データクラス

Vue はC と同様のスコープ規則を使用しますが、プローブ内のデータの多くは外部から派生したものであるため、その性質も考慮する必要があります。そのため、すべてのデータクラスがすべてのプローブや View スクリプトのすべての部分で利用可能または関連するわけではありません。データの基本的な分類は次のとおりです。

globals - Vue スクリプト全体に渡るスコープを持つ変数
shell - シェルの規則に従い、Unix環境から読み取られる変数
カーネル- カーネルによって提供される変数
ローカル - プローブアクションブロックにローカルな変数
スレッドローカル - スレッドにローカルだが、複数のプローブアクションブロックにまたがるスコープを持つ変数
エントリ/終了 - プローブによって定義され、プローブにローカルな変数
組み込み - 現在の発射プローブに関連する値を持つ事前定義された変数

オペレーター

Vue の演算子は、文字列で使用する場合を除いて C 言語の規則に厳密に従います。文字列で使用する場合、+ 演算子は連結を行い、== 演算子は比較に使用されます。

フロー制御

Vueでは、ユーザー関数[4] 、 再帰、ループ構造の定義は許可されていませんが、プローブアクションブロック内で条件付きif-then式を使用できます。ProbeVueの軽量性により、Vueスクリプトでは、パフォーマンスを低下させる可能性のある、高負荷のループ処理や広範な分岐処理を定義することはできません。

暫定的な追跡

暫定トレースとは、コードブロックのトレース出力を暫定的なものとしてラベル付けできる概念です。このコードの出力は、後ほどトレースバッファに表示可能な出力としてコミットすることも、破棄することもできます。これは概念的には、SQLにおけるトランザクション制御とよく似ています。

使用法

Vueスクリプトは、インタープリタマジックを使用して呼び出し、シェルスクリプトのように実行可能に設定することも、コマンドラインパラメータまたは標準入力の形式でProbeVueコマンドへの入力として実行することもできます。[5]慣例により、Vueスクリプトには.eファイル名拡張子が付けられます。

欠陥

Vue言語には集計機能がなく、代わりにリストデータ型を使用します。リストデータ型は類似していますが、機能は限定的です。Solarisの同等製品であるDTraceは、集計データ型と、統計データを表すための強力な集計関数セットを提供しています。リストデータ型は、単一の項目に対する基本的な集計関数のみを提供します( DTraceが提供する集計の連想配列とは対照的です)。リストデータ型は、統計情報を手動で管理するよりも若干簡素化されますが、リストをリセット(例えば、一定期間ごと)することはできません。これは、手動サマリーと基本型を使用すれば簡単に実行できます。IBMは、Vue言語の将来のバージョンで連想配列をサポートすることを約束しています。

DTraceはProbeVueに比べて開発リードタイムが長いため、DTraceにはプローブポイントの仕様がかなり多くあります。[6] IBMは、AIX 6.1の将来のテクノロジーレベルリリースと次のメジャーAIXリリースで、かなりの数の新しいプローブポイントを追加する予定です。

参照

参考文献

  1. ^ 「1.4 : ProbeVue」IBM RedBooks: IBM AIX バージョン 6.1 相違点ガイド。2008年3月10日、p. 21。ISBN 0738485799
  2. ^ AIX 7.1 Knowledge Center ページの ProbeVue エントリ
  3. ^ Vue 言語の概念についての説明は、Vue プログラミング言語のセクションと ProbeVue: 拡張ユーザー ガイド仕様に記載されています。
  4. ^ ProbeVue環境では、定義済み関数が利用可能です。定義済み関数の一覧については、AIX 6.1 Differences RedBookまたはProbeVue: Extended Users Guideの仕様を参照してください。
  5. ^ AIX 6.1 Knowledge Center ページの ProbeVue コマンド エントリ
  6. ^ これらは DTrace ではプロバイダーと呼ばれます。
  • ProbeVue: 拡張ユーザーガイド仕様
  • ProbeVue クイックシート
  • AIX 6.1 の相違点 RedBook
  • ProbeVueに関するDeveloperWorksの記事
  • ProbeVue のサンプル スクリプトと使用上の注意
  • ProbeVue を使用した C++ アプリケーションのデバッグ
「https://en.wikipedia.org/w/index.php?title=ProbeVue&oldid=1321915289」から取得