[BI] OBIEE 11.1.1 - IBM JDK Tuning for WebLogic 11G under AIX 6.x

原文はこちら。
https://blogs.oracle.com/pa/entry/obiee_ibm_jdk_tuning_for

setOBIDomainEnv.shの各行を以下のような感じで編集します
if [ "${JAVA_VENDOR}" = "IBM" ] ; then
   # 64-bit IBM JVM is the only JVM supported for AIX
   # assume to always use Managed server memory args for 64-bit IBM JVM
   SERVER_MEM_ARGS="-Xms2048m -Xmx2048m -Xmns512m -Xmnx512m -Xss2m -Xrs -Xgcpolicy:gencon -Xverify:none"
   export SERVER_MEM_ARGS
用語集
-Xms<size>初期Javaヒープサイズ
-Xmx<size>最大Javaヒープサイズ
-Xss<size>Javaスレッドスタックサイズ
-XrsJava VMによるOSシグナルの使用を削減 (ドキュメントを参照)

-Xmns<size>
-Xgcpolicy:gencon使用時に、新しい世代(nursery)のヒープの初期サイズを指定された値に設定。 デフォルトでは、このオプションはシステムの能力に従って内部的に選択する。このオプションを -Xmn とともに使用しようとすると、エラーが戻る。

-Xmnx<size>
-Xgcpolicy:gencon使用時に、新しい世代(nursery)のヒープの最大サイズを指定された値に設定。 デフォルトでは、このオプションはシステムの能力に従って内部的に選択する。このオプションを -Xmn とともに使用しようとすると、エラーが戻る。
-Xverify:<option>パラメータを指定せずに、検証を可能にする。これがデフォルトであることに注意。そのままではこのオプションは効果がない。

チェックすべきそのほかのパラメータ
JVMにより効果的にメモリを管理できるラージページの使用を強制するには…
Java VM コマンドラインオプション: -Xlp64K
JVM Environment Entry: LDR_CNTLR = "DATAPSIZE=64K@TEXTPSIZE=64K@STACKSPSIZE=64K"

ヒュージページを利用するには…
PPC64は4K(デフォルト)と16Mをサポートしています(これは高速化に寄与しそうではありますが、ヒープの問題を解決することにはならなさそうです...)
AIX & PPC向けのラージページに関する一般的な情報はこちらからどうぞ。

AIX 6.1 情報 > パフォーマンス・マネージメントおよびチューニング > パフォーマンス・マネージメント > メモリー・パフォーマンス
ラージ・ページ
http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/large_page_ovw.htm

Java VMのコマンドラインオプション: -Xlp<size>

AIXでは、JVMに対し、Javaヒープ(Javaオブジェクトが割り当てられるからヒープ)を(サイズを指定していない場合は16MBのページ)ラージページに割り当てるよう指示します。ラージ·ページが利用できない場合、Javaヒープは、次により小さな、システムでサポートされているページサイズに割り当てられます。AIXでラージ·ページを有効にするには、特別な設定を行う必要があります。詳細は上のラージページに関するリンクをどうぞ。

SDKは、Javaヒープの共有メモリセグメントを補強するためだけにラージページの使用をサポートしています。JVMはshmget()にSHM_LGPG と SHM_PIN flags というフラグを使ってラージページを割り当てようとします。 -Xlpオプションは環境変数 IBM_JAVA_LARGE_PAGE_SIZE の設定に優先します。
(AIX、Linux、Windowsのみ)
サイズ<size>が指定されている場合、JVMはそのサイズのページを使用して、JITコードのキャッシュメモリを割り当てようとします。失敗した場合や、そのサイズの実行可能ページがサポートされていない場合は、JITコードのキャッシュメモリが利用可能な最小の実行可能ページサイズを使用して割り当てられます。

verbose gcを有効にするには…
Java VM コマンドラインオプション:–verbose:gc

以下の(IBMのJava VM固有の)Java VMコマンドラインオプションも検討してみましょう

-Xgcpolicy:subpool
ヒープ上のオブジェクトを割り当てる際に優れた性能を出すため、改善されたオブジェクト割当てアルゴリズムを使います。大規模なSMPシステムで性能が向上する可能性があります。

-Xcompressedrefs
以下のいずれかの状況で使用します。
  • Javaアプリケーションに25GB以上のJavaヒープが不要の場合
  • アプリケーションが大量のネイティブメモリを使い、JVMは小さなメモリ使用量で実行する必要がある場合
-Xcompactexplicitgc
System.gc() が呼び出される都度圧縮されます。

-Xcompactgc
(システムおよびグローバルの)全てのガベージコレクションで圧縮します。

-Xsoftrefthreshold<number>
対象がマークされていない場合にソフト参照がクリアされてからのGCの数を決定する数値で、GCが使う数値を設定します。デフォルト値は32です。つまり、参照先がマークされていないソフト参照は、32*(ヒープの空き領域の百分率)のGCサイクル後にクリアされることを意味します。これを減らすとすぐにソフト参照がクリアされます。ソフト参照ベースのキャッシュを使用している場合、キャッシュのヒット率が下がりますが、メモリはより速く解放されます。しかし、これによってOOMの問題を直接解決するわけではありません。というのは、すべてのソフト参照は、OutOfMemoryErrorがスローされる前にクリアされていることが保証されているからです。
デフォルト(圧縮オプションが指定されていない)の場合、トリガーのシリーズは、JVMの将来のパフォーマンスに有益である場合にのみ、圧縮を試行する一連の動きに基づいたGC圧縮が走ります。

0 件のコメント:

コメントを投稿