JProfiler ヘルプ

テレメトリー

プロファイリングの一つの側面は、例えば使用ヒープサイズのように、時間の経過に伴うスカラー測定値をmonitorすることです。JProfilerでは、このようなグラフをテレメトリーと呼びます。テレメトリーを観察することで、プロファイルされたソフトウェアについての理解を深め、異なる測定値間で重要なイベントを関連付けることができ、予期しない動作に気付いた場合にJProfilerの他のビューでより詳細な分析を行うきっかけにもなります。

標準テレメトリー

JProfiler UIの「テレメトリー」セクションでは、デフォルトで多くのテレメトリーが記録されます。インタラクティブなセッションでは、これらは常に有効になっています。一部のテレメトリーでは、特別なタイプのデータが記録されている必要があります。その場合、テレメトリー内に記録アクションが表示されます。

同じ時間軸上で複数のテレメトリーを比較するために、概要では設定可能な行の高さで複数の小さなテレメトリーが上下に並んで表示されます。テレメトリーのタイトルをクリックすると、完全なテレメトリービューがアクティブになります。例えば、選択したテレメトリーを並べて関連付けたい場合など、概要内のテレメトリーのデフォルトの順序が適していないことがあります。その場合は、概要内でドラッグ&ドロップして並べ替えることができます。

フルビューには現在値を示す凡例が表示され、概要に表示されているよりも多くのオプションが用意されている場合があります。例えば、「メモリ」テレメトリーでは個別のメモリプールを選択できます。

JProfilerには、JVM内の高レベルシステムや重要なフレームワークからのイベントを記録する多数のプローブがあります。プローブには、対応するプローブビューに表示されるテレメトリーがあります。これらのテレメトリーをシステムテレメトリーと比較するために、選択したプローブテレメトリーをトップレベルのテレメトリーセクションに追加できます。ツールバーから テレメトリーの追加→プローブテレメトリーの追加 を選択し、1つ以上のプローブテレメトリーを選択します。

追加された各プローブテレメトリーにはテレメトリーセクション内に専用のビューが割り当てられ、概要にも表示されます。

プローブテレメトリーが追加されると、プローブデータが記録されている場合にのみデータが表示されます。記録されていない場合、テレメトリーの説明部分に記録を開始するためのインラインボタンが表示されます。

プローブテレメトリーのコンテキストメニューには、記録アクションと、対応するプローブビューを表示するアクションが含まれています。

プローブビューと同様に、記録されたオブジェクトのVMテレメトリーもメモリ記録に依存しており、記録ボタンと同様のコンテキストメニューが用意されています。

最後に、別のビューで選択されたスカラー値をmonitorする「トラッキング」テレメトリーがあります。例えば、クラス・トラッカービューではクラスを選択してそのインスタンス数を経時的にmonitorできます。また、各プローブには「トラッカー」ビューがあり、選択されたホットスポットや制御オブジェクトがmonitorされます。

ブックマーク

JProfilerは、すべてのテレメトリーに表示されるブックマークのリストを保持します。インタラクティブセッションでは、ツールバーのブックマークの追加ボタンをクリックするか、コンテキストメニューのここにブックマークを追加機能を使用して、現在の時刻にブックマークを追加できます。

ブックマークは手動で作成できるだけでなく、特定の記録の開始と終了を示すために記録アクションによって自動的に追加されます。トリガーアクションやコントローラーAPIを使用すると、プログラムでブックマークを追加することもできます。

ブックマークには色、線種、そしてツールチップに表示される名前があります。既存のブックマークを編集して、これらのプロパティを変更できます。

テレメトリー内の複数のブックマークを右クリックするのが不便な場合は、メニューからプロファイリング→ブックマークの編集アクションを使用してブックマークの一覧を表示できます。ここからブックマークをHTMLまたはCSVにエクスポートすることもできます。

カスタムテレメトリー

独自のテレメトリーを追加する方法は2つあります。JProfiler UIで数値を供給するスクリプトを記述するか、数値のMBean属性を選択します。

カスタムテレメトリーを追加するには、「テレメトリー」セクションに表示されているツールバーボタンテレメトリーの設定をクリックします。スクリプトテレメトリーでは、現在のJProfilerセッションのクラスパスに設定されているすべてのクラスにアクセスできます。値が直接利用できない場合は、このスクリプト内で呼び出せる静的メソッドをアプリケーションに追加してください。

上記の例は、プラットフォームMBeanの呼び出しを示しています。MBeanのスカラー値をグラフ化するには、MBeanテレメトリーを使用する方が便利です。ここでは、MBeanブラウザを使用して適切な属性を選択できます。属性値は数値である必要があります。

複数のテレメトリーラインを1つのテレメトリーにまとめることができます。そのため、設定はテレメトリー自体とテレメトリーラインの2つの部分に分かれています。テレメトリーラインではデータソースとラインのキャプションのみを編集し、テレメトリーでは含まれるすべてのラインに適用される単位、スケール、およびスタックを設定できます。

スタックされたテレメトリーでは、個々のテレメトリーラインが加算され、面グラフを表示できます。スケールファクターは、値をサポートされている単位に変換するのに役立ちます。例えば、データソースがkBを報告する場合、JProfilerに対応する「kB」という単位がないという問題が生じます。スケールファクターを-3に設定すると値はバイトに変換され、テレメトリーの単位として「bytes」を選択することで、JProfilerはテレメトリー内で適切な集約単位を自動的に表示します。

カスタムテレメトリーは、設定された順序で「テレメトリー」セクションの末尾に追加されます。並べ替えるには、概要内で目的の位置にドラッグします。

オーバーヘッドに関する考慮事項

一見すると、テレメトリーは時間の経過とともにメモリを線形に消費するように思われるかもしれません。しかし、JProfilerはテレメトリーごとに消費されるメモリの総量を制限するために、古い値を統合して段階的により粗い粒度に変換します。

テレメトリーの値は1秒に1回しかポーリングされないため、テレメトリーのCPUオーバーヘッドは限定的です。標準テレメトリーの場合、このデータ収集による追加のオーバーヘッドはありません。カスタムテレメトリーの場合、オーバーヘッドは基礎となるスクリプトまたはMBeanによって左右されます。