IBM eXtremeMemory および IBM eXtremeIO の構成

eXtremeMemory を構成することにより、オブジェクトを Java ヒープでなく ネイティブ・メモリーに保管できます。eXtremeMemory を構成すると、新しいトランスポート・メカニズムである eXtremeIO が 使用可能になります。オブジェクトを Java ヒープから移動することで、ガーベッジ・コレクションに伴う 一時停止を回避でき、より安定したパフォーマンスを得られるうえ、応答時間も予測可能になります。

始める前に

このタスクについて

JVM は、プロセス・メモリーを収集、圧縮、および拡張するために使用量ヒューリスティックに 依存します。これらの操作はガーベッジ・コレクターによって実行されます。 しかし、ガーベッジ・コレクションの実行には関連のコストが付随します。Java ヒープのサイズと データ・グリッド内のオブジェクトの数が増すにつれ、ガーベッジ・コレクションの 実行にかかるコストも増えます。JVM は、異なるユース・ケースや目標 (最適なスループット、最適な一時停止時間、世代別、バランス、およびリアルタイムのガーベッジ・コレクション) に応じたそれぞれのヒューリスティックを提供します。 完璧なヒューリスティックは 存在しません。単一ヒューリスティックがすべての可能な構成に適合するわけではありません。

WebSphere® eXtreme Scale はデータ・キャッシングと 分散マップを使用します。分散マップのエントリーには、既知のライフサイクルが入っています。 このライフサイクルには、次の操作、GET、INSERT、DELETE、および UPDATE が 含まれます。これら既知のマップ・ライフサイクルを使用することで、eXtremeMemory および eXtremeIO は、JVM 使用量ヒューリスティックよりも 効率的にメモリーを使用できます。

次の図は、eXtremeMemory の使用が、どのように環境内でより 一貫性のある相対応答時間をもたらすかを示しています。相対応答時間が高いパーセンタイルに 近づくにつれ、eXtremeMemory を使用する要求のほうが相対応答時間が少なくなります。図は 95 から 100 パーセンタイルを表示しています。

図 1. eXtremeMemory とヒープ・ストレージの応答時間の比較
応答時間パーセンタイルが増えるにつれ、相対応答時間が長くなります。
相対応答時間は、ヒープより eXtremeMemory のほうがかなり短くなっています。
eXtremeMemory を使用すると、コンテナー・サーバー間の通信に eXtremeIO が 使用されます。オブジェクトは、コンテナー・サーバー上でバイト列にシリアライズされます。 eXtremeIO と eXtremeMemory を使用可能にするには、データ・グリッド内のすべての コンテナー・サーバーで必要なサーバー・プロパティーを設定し、サーバーを再始動します。

手順

  1. オプション: 使用する適切な maxXMSize プロパティー値を決定します。
    1. 既存の構成内で、エントリーごとのサイズを判定します。 xscmd -c showMapSizes コマンドを実行して、このサイズを判定します。
    2. maxXMSize の値を計算します。 エントリーの最大合計サイズ (maximum_total_size) を 求めるには、size_per_entrymaximum_number_of_entries を乗算します。 メタデータ処理に使用する割合が maxXMSize の 60% を超えないようにしてください。maximum_total_size * 1.65 を乗算して、maxXMSize の値を求めます。
  2. 構成内の各コンテナー・サーバーのサーバー・プロパティー・ファイルを更新して、新しいトランスポートを使用可能にします。 次のサーバー・プロパティーにより、新しいトランスポートが使用可能になります。
    必須プロパティー
    enableXM
    true に設定すると、サーバー上の IBM® eXtremeMemory を使用可能にし、同期および非同期のレプリカ生成用に IBM eXtremeIO を使用するようにサーバーを構成します。キャッシュ・エントリーは、Java ヒープではなく、ネイティブ・メモリーに保管されます。 データ・グリッドのすべてのコンテナー・サーバーは、enableXM プロパティーに同じ値を使用しなければなりません。

    デフォルト: false

    推奨されるプロパティー
    maxXMSize
    eXtremeMemory ストレージ用にサーバーが使用するメモリーの最大量を、メガバイト単位で設定します。

    デフォルト: システム上の合計メモリーの 25%

    オプション・プロパティー
    maxXIONetworkThreads
    eXtremeIO トランスポート・ネットワーク・スレッド・プールに割り振るスレッドの最大数を設定します。

    デフォルト:50

    minXIONetworkThreads
    eXtremeIO トランスポート・ネットワーク・スレッド・プールに割り振るスレッドの最小数を設定します。

    デフォルト:50

    maxXIOWorkerThreads
    eXtremeIO トランスポート要求処理スレッド・プールに割り振るスレッドの最大数を設定します。

    デフォルト:128

    minXIOWorkerThreads
    eXtremeIO トランスポート要求処理スレッド・プールに割り振るスレッドの最小数を設定します。

    デフォルト:128

    xioChannel.xioContainerTCPNonSecure.Port
    サーバー上の eXtremeIO の非セキュア・リスナー・ポート番号を指定します。値を設定しなければ、一時ポートが使用されます。transportType プロパティーが TCP/IP に設定されている場合のみこのプロパティーが使用されます。
    制約事項: xioChannel.xioContainerTCPNonSecure.Port プロパティーは Liberty プロファイルではサポートされません。
    xioChannel.xioContainerTCPSecure.Port
    サーバー上の eXtremeIO の SSL ポート番号を指定します。transportType プロパティーが SSL-Supported または SSL-Required に設定されている場合のみこのプロパティーが使用されます。
  3. コンテナー・サーバーを再始動して、新しいトランスポート・メカニズムの使用を開始します。 詳しくは、スタンドアロン・サーバーの始動と停止およびWebSphere Application Server 環境でのサーバーの開始と停止を参照してください。