【1】メモリ管理機能の強化(GC方式の指定方法)
続いて、WAS 6.1のIBM JVMが採用しているGC方式の調整に用いる“-Xgcpolicy:”の設定について説明をします。
WAS 6.1のIBM JVMでは、“-Xgcpolicy:”の指定が4種類提供されています。
- Throughputの最適化(-Xgcpolicy:optthruput、デフォルト設定)
フラット・ヒープを採用。スループット重視。Parallel Collector(Stop The World)、Parallel Mark、Parallel Sweep - Pause Timeの最適化(-Xgcpolicy:optavgpause)
フラット・ヒープを採用。Concurrent Collector(GCポーズタイムを最小化)、Concurrent Mark、Concurrent Sweep - Generational Concurrent(-Xgcpolicy:gencon)
分割ヒープを採用。Nursery AreaはParallel Collector(Stop The World)、Copying GC。Tenured AreaはConcurrent Collector、Concurrent Mark、Concurrent Sweep - Subpool(-Xgcpolicy:subpool)
フラット・ヒープを採用。スループット重視。Parallel Collector(Stop-the-world)、Parallel Mark、Parallel Sweep。大規模SMP環境用にオブジェクト・アロケーション・アルゴリズムを最適化。AIX、Linux PPC、zSeries、z/OS、i5/OSでのみサポート
どのオプションを選択するかの目安を以下に記します。
- アプリケーションのスループット重視
-Xgcpolicy:optthruput - アプリケーションのレスポンスを重視し、GCによる影響を抑える
-Xgcpolicy:optavgpause - アプリケーションが生成するオブジェクトが短命である
-Xgcpolicy:gencon - アプリケーションが多量のスレッドを使用し(大規模SMPマシン環境)、多くのオブジェクトをアロケーション
-Xgcpolicy:subpool
これらの指定は、WASのJava仮想マシンに対する設定(汎用JVM引数)で行います。
汎用JVMのパフォーマンス・チューニング・オプション
次に、IBM JVMだけではない、汎用JVMの主なチューニング・パラメータについて紹介していきます。
ヒープ・サイズの調整
物理メモリ容量を考慮した設定が必要です。物理メモリ以上の値を指定した場合に、swapが発生して性能に多大な影響を与える危険があります。
- -Xms
最小ヒープ・サイズ(WAS管理コンソール上は、初期ヒープ・サイズに指定) - -Xmx
最大ヒープ・サイズ(WAS管理コンソール上は、最大ヒープ・サイズに指定)
Nursery Space(New Area)の調整
Nursery Spaceの適切なサイズを求めるためには、GCのログを解析し、Scavenge GCの発生頻度およびScavengeにかかった時間を把握し、サイズを調整しながら何回かテストを繰り返す必要があります。
- スループット重視
Nurseryサイズを大きく - ポーズ時間重視
Nurseryサイズを小さく - -Xmn
固定のNurseryサイズの指定(WAS管理コンソール上は、汎用JVM引数に指定) - -Xmns
Nurseryサイズの最小値の指定(WAS管理コンソール上は、汎用JVM引数に指定) - -Xmnx
Nurseryサイズの最大値の指定(WAS管理コンソール上は、汎用JVM引数に指定)
Tenured Space(Old Area)の調整
Tenured Spaceは、アプリケーションのすべてのパーシスタントデータを保持するのに十分な容量が必要です。小さすぎる場合にはGCが多発し、場合によっては、OutOfMemoryエラーが発生します。
- -Xmo
固定のTenuredサイズの指定(WAS管理コンソール上は、汎用JVM引数に指定) - -Xmos
Tenuredサイズの最小値の指定(WAS管理コンソール上は、汎用JVM引数に指定) - -Xmox
Tenuredサイズの最大値の指定(WAS管理コンソール上は、汎用JVM引数に指定)
Parallel Collectorスレッドの調整
- -Xgcthreads<n>
<n>にスレッド数を指定。デフォルト値は、合計プロセッサ数から−1(WAS管理コンソール上は、汎用JVM引数に指定)
Large pageサポートの指定
- -Xlp
Large pageサポートを使用する場合に指定。ただし、OSレベルでのLarge pageの設定も併せて調整する必要がある(WAS管理コンソール上は、汎用JVM引数に指定)
これらオプションの設定において、最適な値を見つけるためには、何回か異なる値を指定しながらテストを繰り返す、という手順を踏む必要があります。
以下に、GCチューニングを行う際に手助けとなるツールを紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.