![]() ![]() ![]() ![]() |
この節には、Oracle JRockit Real Time に含まれる Oracle JRockit JVM の確定的なガベージ コレクタ向けにアプリケーションをチューニングするための以下のガイドラインが含まれています。
注意 : | JRockit で使用可能な標準以外の他の起動コマンドの調整については、JRockit の「コンフィグレーションおよびチューニング ガイド」を参照してください。 |
Oracle JRockit Real Time を使用する環境をコンフィグレーションするには、以下のガイドラインを使用します。
JRockit ガベージ コレクションのスレッドの調整の詳細については、「プロセッサのガベージ コレクション スレッドの量の調整」を参照してください。
Oracle JRockit Real Time 対応のアプリケーションを設計する場合は、以下のガイドラインを使用します。
J2EE アプリケーションを Oracle JRockit Real Time 向けにチューニングする場合は、以下のガイドラインを使用します。
Oracle WebLogic JMS アプリケーションで JRockit Real Time を使用する場合は、以下のガイドラインを使用します。
JMS コンシューマの詳細については、『WebLogic JMS プログラマーズ ガイド』の「アプリケーション設計のベスト プラクティス」を参照してください。
1
enabled
ACKNOWLEDGE_PREVIOUS
JMS 接続ファクトリのコンフィグレーションの詳細については、『Administration Console オンライン ヘルプ』の「接続ファクトリのコンフィグレーション」を参照してください。
注意 : | リソース参照プールは、ターゲット送り先が各呼び出しで変化する場合には適していません。そのような場合は、通常の JMS を使用するようにアプリケーションのコードを変更し、JMS 接続、セッション、プロデューサ、およびコンシューマをキャッシュします。 |
JRockit JVM の確定的なガベージ コレクタを使用すると、チューニングに関する以下の推奨事項によって、さらなるパフォーマンスの向上と休止時間の削減が可能になります。確定的ガベージ コレクタの詳細については、Oracle JRockit の『診断ガイド』を参照してください。
応答時間が目的のレベルに到達する前に、ウォームアップ期間がある場合があります。このウォームアップ時に、JRockit JVM ではクリティカル コード パスが最適化されます。ウォームアップ期間は、以下のように、アプリケーションとハードウェアに依存します。
最小ヒープ サイズ (-Xms
) を小さく設定したり、最大ヒープ サイズ (-Xmx
) を大きく設定すると、ガベージ コレクションの発生頻度に影響を及ぼし、アプリケーションで使用可能なおおよその有効なデータの量が決定されます。まずはじめに、次のヒープ サイズの使用を試してください。
java -Xms1024m -Xmx1024m -XgcPrio:deterministic -XpauseTarget=30
詳細については、Oracle JRockit JVM 『コマンドライン リファレンス』の「-X コマンドライン オプション」を参照してください。
pauseTarget
オプションを指定せずに -Xgcprio:deterministic
を指定すると、デフォルト値に設定されます。このリリースでは、30 ミリ秒です。-XpauseTarget
オプションを使用して、デフォルトの目標休止時間 (30 ミリ秒) を増やす必要がある場合もあります。pauseTarget
オプションで現在許可されている最大値は 5000 ミリ秒です。-XpauseTarget
値を最小値まで減らすことができます。 このリリースでは、最小値は 10 ミリ秒です。
詳細については、Oracle JRockit の『コマンドライン リファレンス』の「-X コマンドライン オプション」を参照してください。
ページ サイズを増やすと (-XXlargePages
)、TLB (Translation Look-aside Buffer) でのキャッシュ ミスを制限することにより、パフォーマンスを向上し、休止時間を削減できます。詳細については、Oracle JRockit JVM 『コマンドライン リファレンス』の「-XX コマンドライン オプション」を参照してください。
負荷に関して過度に用心することはありません。確定的なガベージ コレクションでは、確定による保証を損なわずにかなりの量の負荷を処理できます。負荷が少なすぎると、JVM のオプティマイザと GC のヒューリスティックで扱える情報がほとんどなくなるため、結果的にパフォーマンスが標準以下に低下します。ベスト プラクティスでは、さまざまな負荷 (確定的な GC を使用する場合と使用しない場合を含む) でベンチマークを実行し、最適な負荷を決定します。
JRockit JVM の詳細な出力は、通常はパフォーマンスに大きな影響を与えずに、JVM のメモリおよび GC のアクティビティの分析に非常に役立ちます。表 2-1 は、JVM のメモリおよび GC のアクティビティの分析時に推奨される詳細なオプションを定義しています。
Soft-
、Weak-
、および Phantom-
参照などの、使用されるファイナライザと参照オブジェクトの量を制限してみます。これらのタイプでは特殊な処理が必要とされ、大量に発生した場合は休止時間が 30 ms よりも長くなる場合があります。
ガベージ コレクション トリガ (-XXgctrigger
) を調整し、使用されるヒープ領域の容量を制限してみます。こうすることで、アプリケーションを変更せずに、より頻繁にガベージ コレクションを発生させるようガベージ コレクションに強制できます。トリガの制限に達するたびにガベージ コレクションが開始されるため、ガベージ コレクション トリガは多少確定的です。Oracle JRockit JVM の『診断ガイド』を参照してください。
注意 : | トリガの値を低く設定すると、ガベージ コレクションが終了する前にヒープが満杯になる場合があり、新しいメモリを取得する前にガベージ コレクションが完了するのを待機する必要があるため、スレッドの休止時間が長くなる原因になります。通常は、ヒープの一部は空いているためメモリは常に使用可能であり、ガベージ コレクションで Java アプリケーションが停止しても休止は短くて済みます。 |
現在では高度な処理を行う各種のハードウェアが入手可能であるため (HyperTransport、Strands、デュアル コアなど)、JRockit JVM では開始すべき適切な GC スレッドの数を決定できない場合があります。現在は、1 つの物理 CPU につき 1 つのスレッドを開始することが推奨されます。つまり、コアでなく 1 つのチップにつき 1 つのスレッドです。ただし、ガベージ コレクション スレッドが多すぎる場合は、システムで実行中のスレッドが増えるほど CPU が飽和状態になり、Java アプリケーションが影響を受けるため、アプリケーションのレイテンシに影響を及ぼします。逆に、スレッドが少なすぎる場合は、並行処理が減るために GC のマーク フェーズが増加します。たとえば、4 コアのデュアル コア Intel Woodcrest マシンで推奨される GC スレッドの数は 2 つです。これは、マシンのプロセッサの数と同じです。
JRockit JVM がマシンで使用しているガベージ コレクション スレッドの数を表示するには、-verbose:memdbg
を使用して JRockit JVM を開始し、起動時に出力される以下の行をチェックします。
[memdbg ] number of oc threads: <num>
[memdbg ] number of yc threads: <num>
必要に応じて、-XXgcthreads:<# threads>
パラメータを使用して GC スレッドの数を調整します。
詳細については、Oracle JRockit JVM 『コマンドライン リファレンス』の「-XX コマンドライン オプション 」を参照してください。
この節では、その他のパフォーマンスおよびチューニング情報を示しています。
Oracle JRockit JVM の追加の診断情報については、Oracle JRockit JVM の『診断ガイド』を参照してください。
![]() ![]() ![]() |