Hitachi

インメモリデータグリッド Hitachi Elastic Application Data Store ユーザーズガイド


4.3.1 スレッド数を見積もる

〈この項の構成〉

(1) 1EADSサーバプロセス当たりのスレッド数

1EADSサーバプロセス当たりのスレッド数を見積もる計算式を次に示します。

■ノンブロッキングI/O通信制御を使用しない場合

1EADSサーバプロセス当たりのスレッド数(ノンブロッキングI/O通信制御を使用しない場合)=

 {キャッシュ数×(データの多重度×2−1)×2+EADSサーバ数※1×6

 +キャッシュ単位に行われる処理の最大同時実行スレッド数

 +キャッシュ数×3

 +EADSサーバへの最大同時接続数+GCスレッド数+90}÷0.8※2

■ノンブロッキングI/O通信制御を使用する場合

1EADSサーバプロセス当たりのスレッド数(ノンブロッキングI/O通信制御を使用する場合)=

 {キャッシュ数×(データの多重度×2−1)×2+EADSサーバ数※1×6

 +キャッシュ単位に行われる処理の最大同時実行スレッド数

 +キャッシュ数×3

 +リクエスト処理スレッド数+セレクタスレッド数+GCスレッド数+90}÷0.8※2

注※1

クラスタを停止させないで,EADSサーバをクラスタに追加する(スケールアウト処理を実行する)予定がある場合は,EADSサーバ数に,追加するEADSサーバの数を含めてください。追加するEADSサーバの数が予測できない場合は,EADSサーバ数に,96を代入してください。

注※2

小数点以下の値は切り上げてください。

データの多重度:

共通設定のeads.replication.factorパラメタの指定値

キャッシュ単位に行われる処理の最大同時実行スレッド数:

データの多重度−1(データの多重度が1の場合は1)

EADSサーバへの最大同時接続数:

サーバ定義のeads.server.maxConnectionsパラメタの指定値

リクエスト処理スレッド数:

サーバ定義のeads.server.nonBlocking.processorThreadsパラメタの指定値

リクエスト処理スレッド数を見積もる計算式を次に示します。なお,この見積もりによる計算値は,決定値ではなくチューニングの際の参考値であるため,実際の環境や性能に応じて変更が必要な可能性があります。また,リクエスト処理スレッド数は「同時に実行されるキャッシュ操作およびファンクション操作リクエスト数の最大値」まで増やすと,EADSサーバの処理性能が改善することがあります。

リクエスト処理スレッド数=

 MAX(1EADSサーバに対して割り当て可能な論理コア数−セレクタスレッド数−1, 1)

MAX:

計算結果の最も大きい値を選ぶことを示しています。

(例)MAX(2,10)の計算結果は10となります。

セレクタスレッド数:

サーバ定義のeads.server.nonBlocking.selectorThreadsパラメタの指定値

セレクタスレッド数には1を指定することを推奨します。なお,1EADSサーバに対して割り当て可能な論理コア数が多い場合には,指定値を大きくすると,EADSサーバの処理性能が改善することがあります。

GCスレッド数:

GCスレッド数を見積もる計算式を次に示します。

GCスレッド数=

 STWフェーズで使用されるGCスレッド数+コンカレントフェーズで使用されるGCスレッド数

STWフェーズで使用されるGCスレッド数:

共通定義のeads.java.zgc.parallelGCThreadsパラメタの指定値

指定していない場合はJavaVMのデフォルト値(実行環境の論理CPU数の60%(小数点以下の値は切り上げ))が代入されます。

コンカレントフェーズで使用されるGCスレッド数:

共通定義のeads.java.zgc.concGCThreadsパラメタの指定値

指定していない場合はJavaVMのデフォルト値(実行環境の論理CPU数の25%(小数点以下の値は切り上げ))が代入されます。

eztool importコマンド,eztool importecfコマンド,またはeztool resumeコマンド実行時にEADSサーバが使用するスレッド数を見積もる計算式を次に示します。

これらのコマンドを実行する場合は,上記の1EADSサーバプロセス当たりのスレッド数(ノンブロッキングI/O通信制御を使用しない場合),または1EADSサーバプロセス当たりのスレッド数(ノンブロッキングI/O通信制御を使用する場合)の値に,次の計算式で見積もった値を加算してください。なお,eztool importコマンド,eztool importecfコマンド,およびeztool resumeコマンドは同時実行されないため,運用の中でそれぞれを実行する場合でも見積もりが増加することはありません。

eztool importコマンド,eztool importecfコマンド,eztool resumeコマンド実行時のスレッド数=

 {1+最大インポート実行スレッド数

 +MAX((EADSサーバ数−1),最大インポート実行スレッド数×(データの多重度−1))

 }÷0.8

注※

小数点以下の値は切り上げてください。

MAX:

計算結果の最も大きい値を選ぶことを示しています。

(例)MAX(2,10)の計算結果は10となります。

最大インポート実行スレッド数:

最大インポート実行スレッド数を見積もる計算式を次に示します。

  • --threadsオプションを指定したeztool importコマンドを実行しない場合

    最大インポート実行スレッド数=0

  • --threadsオプションを指定したeztool importコマンドを実行する場合

    最大インポート実行スレッド数=--threadsオプションに指定するインポート実行スレッド数。指定する値が実行ごとに異なる場合は,その中で最も大きい値。

データの多重度:

共通設定のeads.replication.factorパラメタの指定値

(2) 1コマンドプロセス当たりのスレッド数

1コマンドプロセス当たりのスレッド数を見積もる計算式を次に示します。

1コマンドプロセス当たりのスレッド数=EADSサーバプロセス数×2+62