パフォーマンスの調整

アプリケーションのパフォーマンスを向上させるには、Eclipse OpenJ9 VM を調整する、ハードウェア機能を有効にする、アプリケーション・コードで特定の API を使用する、などの方法があります。

OpenJ9 は、標準的なワークロードを持つ Java™ アプリケーションに最適なランタイム環境を提供する一連のデフォルト・オプションを使用して開始するように構成されています。 ただし、ご使用のアプリケーションが一般的なものではない場合、VM を調整してパフォーマンスを向上させることができます。 以下のオプションについて詳しくは、リンクをクリックしてください。
ガーベッジ・コレクション・ポリシーの選択 (Choosing a garbage collection policy)
OpenJ9 には、いくつかのガーベッジ・コレクション・ポリシーがあります。 これらのポリシー、およびそれらのポリシーからメリットを得られるアプリケーション・ワークロードのタイプについて詳しくは、 OpenJ9 ユーザー資料の ガーベッジ・コレクション・ポリシー を参照してください。
クラス・データ共有による起動時間の改善 (Improving startup times with class data sharing)
稼働中の VM の間でクラス・データを共有することができます。このことによって、キャッシュが作成された後、VM の起動時間が短くなります。 詳しくは、 OpenJ9 ユーザー資料の「 Introduction to class data sharing 」を参照してください。
大規模ページの選択 (Choosing large pages)
ご使用のアプリケーションが大量のメモリーを割り振って、そのメモリーに頻繁にアクセスする場合、システム上で大規模ページ・サポートを有効にするようお勧めします。 詳しくは、 OpenJ9 ユーザー資料の「 システムの構成 」を参照してください。
クラウド環境用に最適化
Linux® で世代別並行ガベージコレクションポリシーを使用している場合、 -XX:IdleTuningMinIdleWaitTime オプションを使用して、解放されたメモリページがいつ解放されるかを調整することができます。 この設定によりメモリーの使用を抑制できるため、この設定はクラウド環境におけるアプリケーション実行コストを減らすことに役立つ可能性があります。 詳細は、xml-ph-0000@deepl.internalのユーザーガイドを参照してください。 -XX:IdleTuningMinIdleWaitTimeOpenJ9 のユーザーガイドを参照してください。
さらに、ハードウェア機能を有効にするか、または特定の API をアプリケーション・コードで使用して、パフォーマンスを向上させることもできます。 以下のオプションについて詳しくは、リンクをクリックしてください。
ネイティブ・データ
Java アプリケーションがネイティブ・データを操作する場合は、Data Access Accelerator API のメソッドを利用するようにアプリケーションを作成することを検討してください。
詳しくは、 J9 VM リファレンスの「 The Data Access Accelerator Library 」を参照してください。
リモート直接メモリー・アクセス (RDMA) の活用 (Exploiting Remote Direct Memory Access (RDMA))
リモート直接メモリー・アクセス (RDMA) をサポートするハイパフォーマンス・ネットワーク・インフラストラクチャーは、アプリケーション間の通信を高速化することを目的としています。
  • Linux システムでは、既存の Java ソケット・アプリケーションは、 Socket および ServerSocket API の拡張機能を使用して RDMA 対応ネットワーク・アダプターを利用できます。 詳しくは、 Java Sockets over Remote Direct Memory Access (JSOR) (Linux のみ)を参照してください。 あるいは、jVerbs ライブラリー内の API を使用して RDMA 対応インフラストラクチャー上で直接通信する、アプリケーションを作成することもできます。 jVerbs ライブラリー (Linux のみ)を参照してください。
  • z/OS® システムでは、 OpenJ9 は、TCP ソケット・アプリケーションが透過的に RDMA を使用できるようにするために、SMC-R プロトコル・ソリューションの使用をサポートします。 この機能により、直接、高速、低遅延、メモリー間(ピアツーピア)の通信が可能になります。 詳しくは、 リモート・ダイレクト・メモリー・アクセスによる共有メモリー通信 (z/OS のみ)を参照してください。
グラフィックス処理装置 (GPU) の活用 (Exploiting Graphics Processing Units (GPU))
Linux および Windows システムでは、特定の処理機能をプロセッサー (CPU) からグラフィックス処理装置にオフロードすることにより、Java アプリケーションのパフォーマンスを向上させることができます。 詳しくは、 グラフィックス処理装置の活用を参照してください。

パフォーマンス上の問題のデバッグ