Technical Article

この記事は、Sun Java System Application Server 7 (旧 Sun ONE Application Server 7 (S1AS7)) と Tomcat サーバーの両方で利用できる Linux と Java Desktop System (JDS) 用の GC Portal ソフトウェアを含むように更新されました。 元々は、Solaris と Windows 用にのみ提供されていました。 GC Portal ソフトウェアのこのバージョンはまた、GC Portal 内に統合された VisualGC を含みます。

GC Portal は、JVM によって生成された verbose:gc ログをマイニングすることによって、ガベージコレクション(GC)の観点から Java アプリケーションの解析とパフォーマンスチューニングを可能にします。 GC Portal は、GC に関する問題のためのワンストップ ページであり、ホワイトペーパー、ケーススタディ、およびその他の資料の広範なコレクションを含みます。 このポータルは、Java 2, Standard Edition (J2SE) の一部として配布されている Sun Microsystems の HotSpot JVM とともに使用されることを意図しています。 GC Portal の使用は、開発者が GC の観点からアプリケーションと JVM の動作をモデリングすることを可能にします。 この記事では、開発者が GC を分析し、チューニングするためのツールとしてそれを使用できるように、GC Portal の設計と機能を紹介します。

GC Portal は、分析のために Portal によって処理される verbose:gc ログを生成するために JVM によって次のスイッチの使用を要求します。

 -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails 

Other JVM switches are not required to be used for the appropriate logs for GC Portal, but can be added as considered appropriate for tuning and sizing the JVM and the application.JVM スイッチは、GC Portal の適切なログを生成するために使用する必要はありませんが、JVM とアプリケーションのチューニングとサイジングのために適切であると考えられる場合は、追加できます。 注: -XX スイッチは非標準であり、将来の JVM リリースで予告なく変更されることがあります。

Application Modeling and Performance Tuning from a GC Perspective

Modeling Java applications makes it enables to remove unpredictability attributed to the frequency and duration of pauses for garbage collection.The Java アプリケーションをモデリングすると、開発者は、ガベージ コレクションのための休止の頻度と期間に起因する予測不可能性を取り除くことができます。 これらの一時停止は、

  • 生成および生存するオブジェクトの数と合計サイズ
  • これらのオブジェクトの平均寿命
  • JVM ヒープのサイズ

ポータルに提供される verbose:gc ログ ファイルの特定セットに対する GC Portal が提供する分析に基づいて、アプリケーションおよび JVM 動作をより理解できるモデルを構築することが可能です。

verbose:gc のログは、以下のような貴重な情報を含んでいます。

  • GC の一時停止時間
  • GC の頻度
  • アプリケーションの実行時間
  • 作成および破棄するオブジェクトのサイズ
  • オブジェクト作成のレート
  • 各 GC でリサイクルしたメモリ

アプリケーションの動作をグラフ化して解析すると、一時停止の持続時間とメモリ消費量の間の異なる関係性を判定することができます。 一時停止の頻度、オブジェクトの作成率、解放されるメモリ。 この情報の分析により、開発者はアプリケーションのパフォーマンスを調整し、与えられた状況に対して最適なヒープ サイズ、他の JVM オプション、および代替 GC アルゴリズムを指定することにより、GC 周波数および収集時間を最適化することができます。

Information Derived from verbose:gc Logs for Analyzing and Modeling GC Behavior

この種の情報を使用してガベージ コレクションのプロセスをパフォーマンス調整することができます。

Average GC pauses in the young and old generation

The average time the application is suspended while garbage collection is done in the JVM.

Average GC frequency in the young and old generation

The periodicity at the garbage collector runs in the young and the old generation.

The mean GC frequency in the young and older generation is the generation. これは、各GC活動の時間インスタンスが記録されるので、取得することができます。

GCシーケンシャルオーバーヘッド

ガベージコレクションが行われるために、アプリケーションが中断されているシステム時間の割合です。 Avg.GCとして計算されます。 GCポーズ * Avg. GC frequency * 100%

GC concurrent overhead

ガベージコレクションがアプリケーションと同時に発生するシステム時間のパーセンテージ。 平均同時GC時間(掃引フェーズ)*平均同時GC頻度/CPU数

若い世代と古い世代の各GCによってリサイクルされるメモリ

各GC中に収集された総ガベージ

割付率

若い世代のアプリケーションによってデータが割り当てられるレート。 若い世代のヒープ occupancy_at_start_of_current_gc=x, occupancy_at_end_of_previous_gc = y、GC頻度が1/秒の場合、割り当て率は約x-y/秒です。

プロモーション率

旧世代にデータがプロモーションされる率。

総データは、短期データと長期データに分けることができます。

長期データは、若い世代のGCサイクルを生き残り、古い世代に昇格するものです。

短期データ

非常に早く死んでしまう短命データで、若い世代に集められるものです。 これは、総データ-長期データとして計算できる。

総活動データ

これは、任意のインスタンスで生きているデータの総量である。 これは、JVMヒープをサイジングするためのモデルを構築するために重要です。 たとえば、毎秒 100 トランザクションの負荷で、トランザクションごとに 50K の長期データが最低 40 秒間持続する場合、旧世代の最小メモリ フットプリントは

50K*40s*100 = 200M

メモリ リーク

これらは検知でき、これらのログで示されるように各掃除で集められたゴミを監視することによって「メモリ不足」エラーがより理解できるのです。

GC ログを生成するためのフラグとスイッチ

JVM がファイルに記録することができる多くの有用な GC 関連情報があります。 この情報は、GCの観点からアプリケーションとJVMを調整し、サイズを調整するために、GCポータルによって使用されます。 詳細な GC 情報を含むログは、Java アプリケーションが次のスイッチで実行されたときに生成されます:

verbose:gc このフラグは、GC 情報のロギングをオンにします。 すべてのJVMで利用可能です。

-XX:+PrintGCTimeStamps アプリケーションの開始に対してGCが発生する時刻を出力します。 J2SE1.4.0から利用可能です。

-XX:+PrintGCDetails GCの詳細を表示します。例えば、

  • GC前後の若い世代と古い世代のサイズ
  • 総ヒープのサイズ
  • 若い世代と古い世代のGCにかかる時間
  • すべてのGCで昇格するオブジェクトサイズ

JVM1.0 からのみ利用可能です。4.0.

Using the GC Portal for Application Modeling and Performance Tuning

GC Portal は、リーン、ピーク、およびバースト条件で最適に実行するようにアプリケーションを調整しサイズ設定するように、アプリケーションの GC 動作をより理解するために使用することができます。 J2SE1.2.2, J2SE1.3, J2SE1.4, J2SE1.4.1 以降をサポートしており、2つの新しいガベージコレクション実装、パラレルコレクターとコンカレントコレクターが含まれています。 GCログファイルの提出や、ログファイルを元にしたアプリケーションの動作解析が可能です。 また、次のようなアプリケーションおよび環境固有の情報も考慮します。

  • Transaction Rate or Server Load

    これは、クライアント/サーバー構成で動作する典型的なサーバー サイド アプリケーションに適用されます。 このようなアプリケーションでは、クライアントがサーバーの処理に定常的な負荷を生成する可能性のある速度であり、サーバーの定常状態分析に有用です。 定常状態分析には、ワーストケース/ピーク/バースト状況、または平均状況のような複数のシナリオを含めることができます。 この情報は必須ではありません。 利用できない、または適用できない場合は、無視することができます。 このような場合、ポータルによって提示される情報の一部も無視する必要があります。

    • Theoretical throughput
    • Short term data
    • Long term data
  • Number of processors on the target machine

    Concurrent GC overhead などポータルによる特定の計算のためにこの情報は使用されます。

  • アプリケーションが使用する JVM バージョン (1.2.2_xx, 1.3.x, 1.4.0, 1.4.x).1)

    verbose:gc ログ形式は標準ではなく、JVM から変更があったため、この情報は GC Portal で必要とされます。

GC Portal Design

GC Portal は 4 つのエンジンで構成されています。

  • Analyzer and Reporting Engine
  • Graphical engine
  • Intelligence engine
  • Session and storage engine
  • VisualGC

Analyzer and Reporting Engine

  • Log files, mines them and reports verbose:gc Loads the log file:
    • 若い世代と古い世代のGC休止
    • 若い世代と古い世代のGC頻度
    • オブジェクトの割り当て率
    • オブジェクトのプロモーションの率
    • 若い世代から古い世代へのGC総時間

  • アプリケーション総時間
  • 若い世代と古い世代の初期および最終ヒープサイズ
  • GC逐次実行時間 オーバーヘッド
  • GC 同時オーバーヘッド

アプリケーション関連情報

  • 1 トランザクションあたりの短期データ
  • 1 トランザクションあたりの長期データ
  • Theoretical maximum throughput
  • CPU efficiency

トランザクションベースではないアプリケーションではこの情報を無視してもかまいません。 しかし、クライアントサイドのアプリケーションや、極端に位相のずれた動作をするようなアプリケーションには関係します。

  • Presents detailed GC related behavior of application and JVM over the time
    • User can view the GC data, sampled at selected intervals of time for the entire run.

    This detailed GC information sampled at selected intervals for the entire run is extremely useful where applications exhibit varying behavior over time, such as phased, cyclical or random reactive applications, and the average summary information might be skewed as the result.The information has to have been upgraded upgraded GC data. この詳細でサンプリングされた情報は、時間とともに変化するアプリケーションとJVMの動作を見るために使用することができます。

  • 若い世代と古い世代の時間経過に伴う詳細なメモリリサイクル情報
    • Memory before GC
    • Memory after GC

  • Memory freed at each GC
  • 若い世代のオブジェクトのエージング情報
    • ログ生成時に-XX:+PrintTenuringDistributionスイッチが使用されていれば利用可能です。
  • Figure 1 は、GC Portal の Analyzer エンジンによって提示されるレポート例のスナップショットです。 GC Portal からの分析エンジンのスナップショット

    Graphical Engine

    表形式で Analyzer エンジンによって提示される情報のほとんどは、グラフィカルにプロットすることができます。 複数のグラフを同じグラフ上にプロットして比較を支援することができます。

    • 詳細なタイムライン GC 分析のグラフィカル表示
    • すべての GC でのメモリ リサイクル情報のグラフィカル表示
    • 各種ログ ファイルからの GC 情報のグラフィカル比較
    • すべての「年齢」に対するオブジェクト年齢持続情報のグラフ表示

    図2.Global GC Analysis のグラフ Intelligence Engine

    GCommerce Portal のグラフィカルエンジンのスナップショット

    • General Recommendations

      This section provides papers covering general information and recommendations on tuning GC performance.The information is composed of the context of the context of the GC portal. このポータルは動的な推奨や自動チューニングを提供するものではありません。

    • Reduce GC pause and frequency
    • Reduce GC sequential overhead

    • Size the young and old generation heap to handle a given load
    • Detect memory leaks
    • Choose collectors
    • Choose different JVM options and switches.The recommendations include general information on how to:
      • GC 一括削除と頻度の削減
      • Choose sequential overhead.The Recommendations: The Recommendations は、以下のような一般情報を含みます:
      • GC 一括削除と頻度の削減。
    • Empirical Modeling

      複数のverbose:gcログから分析したデータに基づいて、アプリケーションの実行をランク付けします。 ユーザーは、以下の選択肢に基づいてモデリング用のファイル(ロードされたすべてのファイルの中から)を選択できます:

      • Transaction rate
      • Number of Processors
      • Young generation size
      • Old generation size
      • JDK version
      • Heap sizes

      ユーザーは以下の基準に基づいて最適な JVM 環境を格付けすることが可能です。

      • GC pauses
      • GC sequential overhead
      • GC frequency
      • CPU efficiency

      また、さまざまな実行のグラフィック比較を表示することもできます。 GC Portal の Intelligence エンジンのスナップショット

    • “what-if” シナリオによるサイジングとチューニングの予測

      若い世代のサイズを変更すると GC の動作がどのように変わる可能性があるのか。 この機能は現在制限されており、Concurrent Collector を使用する J2SE1.4.1 以降でのみ機能します。 投影出力は、以下のような変化の可能性を示します。

      • GC pause
      • GC frequency
      • GC sequential load
      • CPU utilization (%)
      • Speedup
      • Allocation rate
      • Promission rate
      • Size of Short-Size of long-lived data
    • Case Studies

      GCの観点からチューニング方法について、いくつかの実際のケーススタディを紹介します。

    • White Papers

      GCチューニングに関する詳細なホワイトペーパーへのポインタです。

    Session and Storage Engine

    • Manage user sessions
    • Manage and store user profiles Manage and store user data/logs securely

    • Make the user/data logs available for reference viewing, and empirical modeling

    Figure 4. GC Portal のストレージ エンジンのスナップショット

    VisualGC

    The visualgc tool attach itself to an instrumented HotSpot JVM and collects and graphically display garbage collection, class loader, and HotSpot compiler performance data. これは、JVMランタイムでGC関連情報を収集するためのGCポータルに組み込まれています。 GC Portal は、ブラウザで VisualGC 情報を実行し、表示するために webstart ツールを使用します。 このツールの詳細は、CoolStuff – jvmstat ページで利用可能です。 2325>

    Acknowledgements:

    The author will like to thank Mayank Srivastava, Nagendra Nagarajayya, Nandula Narasimham and S.R.Venkatramanan for their contribution to the GC Portal.GCポータル内からのVisualGC実行用の ReadMe file is built into the GC Portal Software. GC Portalに貢献した著者に感謝します。 また、Sun JVMガベージコレクションのアーキテクトとエキスパートであるJohn Coomes, David Detlefs, Steve Heller, Peter Kessler, Ross Knippel, Jon Masamitsu, James Mcilree and Y.S. Ramakrishnaの協力と指導に感謝したい。 また、Sun の JVM パフォーマンス チームのメンバーである Timothy Cramer と Brian Doherty (VisualGC と jvmstat ツールの著者) には、GC Portal に VisualGC を統合するために協力していただきました。 彼女は、Sun の ISV やパートナーが新しい Sun テクノロジーやプラットフォームを迅速かつ効率的に採用できるよう支援するための作業を担当しています。 Sunプラットフォームのパフォーマンスチューニングに7年近く携わり、この業界では10年近いキャリアを持つ。 アルカは、インドのインド工科大学 (IIT) を卒業しました。

    Leave a Reply