Hitachi

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


4.4.1 キャッシュデータファイルのサイズおよび面数を見積もる

ここでは,次の値の見積もりについて説明します。

キャッシュデータファイルのサイズおよび面数は次の手順で見積もります。

  1. 媒体への書き込みブロックサイズを決定します。

  2. キャッシュデータファイルに格納する,レコード1件分のサイズを見積もります。

  3. キャッシュデータファイル1面のサイズと実際に格納できるデータ量を見積もります。

  4. 2.を基に,システムで管理する有効データの最大量を見積もります。

  5. コンパクションの実施間隔を決定します。

  6. 2.と5.を基に,コンパクション中に更新されるデータを格納するための容量(更新データ用の容量)を見積もります。

  7. 4.と6.から,キャッシュデータファイルに必要な容量を見積もります。

  8. 7.から,キャッシュ定義のeads.cache.disk.filesizeパラメタに指定する,1レンジ当たりのキャッシュデータファイルのサイズ,およびキャッシュ定義のeads.cache.disk.filenumパラメタに指定する,1レンジ当たりのキャッシュデータファイルの面数を見積もります。

  9. システムの運用前に,コンパクションに掛かる時間などに問題がないことを確認します。

それぞれの説明を次に示します。

〈この項の構成〉

(1) 書き込みブロックサイズを決定する

キャッシュデータファイルに対して,1回で書き込むデータサイズを,書き込みブロックサイズといいます。

書き込みブロックサイズは,キャッシュデータファイルの格納先の媒体に合わせて設定します。設定した値は,キャッシュ定義のeads.cache.disk.blocksizeパラメタに指定します。

(2) レコード1件分のサイズを見積もる

EADsサーバに格納する1件分のデータは,key,value,および制御情報を合わせて,レコードという単位で格納します。

レコード1件分のサイズを見積もる計算式を次に示します。

レコード1件分のサイズ(単位:キロバイト)=

 (EADsサーバに格納されるkeyのサイズ(単位:バイト)

 +EADsサーバに格納されるvalueのサイズ(単位:バイト)+36)÷1,024

注※

この括弧内の値は,「4.4.1(1) 書き込みブロックサイズを決定する」で決定した書き込みブロックサイズ(単位:キロバイト)(キャッシュ定義のeads.cache.disk.blocksizeパラメタの指定値)の整数倍に切り上げて見積もってください。

EADsサーバに格納されるkeyのサイズ:

EADsサーバに格納されるkeyのサイズを見積もる計算式を次に示します。

EADsサーバに格納されるkeyのサイズ(単位:バイト)=

 keyの文字数+4

EADsサーバに格納されるvalueのサイズ:

EADsサーバに格納されるvalueのサイズを見積もる計算式は,APを作成する言語によって異なります。計算式を次に示します。

  • C言語の場合,またはJava言語でバイト配列を使用する場合

    EADsサーバに格納されるvalueのサイズ(単位:バイト)=

     APIで指定したvalueのバイト数+2

  • Java言語でバイト配列以外を使用する場合

    EADsサーバに格納されるvalueのサイズ(単位:バイト)=

     java.io.ObjectOutputStreamクラスで直列化したあとのvalueのバイト数+2

参考

EADsサーバは,処理の効率化のために,keyおよびvalueを独自の形式で格納しています。このため,EADsサーバに格納されるkeyおよびvalueのサイズは,上記の計算式を使用して見積もる必要があります。

(3) キャッシュデータファイル1面のサイズと格納できるデータ量を見積もる

キャッシュデータファイルの1面のサイズは,キャッシュ定義のeads.cache.disk.filesizeパラメタに指定したサイズです。キャッシュデータファイルにはブロックサイズの2倍となる管理情報が含まれるため,実際のデータの格納領域のサイズは,次に示す計算式で算出されるサイズとなります。

キャッシュデータファイル1面のデータの格納領域(単位:キロバイト)=

 (キャッシュデータファイル1面のサイズ(単位:メガバイト)×1,024

 −(書き込みブロックサイズ(単位:キロバイト)×2)

キャッシュデータファイル1面のサイズ

キャッシュ定義のeads.cache.disk.filesizeパラメタの指定値

書き込みブロックサイズ:

4.4.1(1) 書き込みブロックサイズを決定する」で決定した値(キャッシュ定義のeads.cache.disk.blocksizeパラメタの指定値)

上記の式で算出したデータの格納領域のサイズと「4.4.1(2) レコード1件分のサイズを見積もる」で算出したレコードのサイズによって,キャッシュデータファイルに格納できるデータ量を求めることができます。

(4) 有効データの最大量を見積もる

システムで管理する有効データの最大量を算出します。

ここでの有効データとは,更新や削除で無効となったデータを除く,getで取得できるデータのことです。

有効データの最大量を見積もる計算式を次に示します。

有効データの最大量(単位:キロバイト)=

 1レンジに同時に格納される最大のkey数×レコード1件分のサイズ(単位:キロバイト)

レコード1件分のサイズ:

4.4.1(2) レコード1件分のサイズを見積もる」で算出した値

参考

更新や削除で無効となるデータについては,「10.9 キャッシュデータファイルの使用量を削減する(キャッシュデータファイルをコンパクションする)」を参照してください。

(5) コンパクションの実施間隔を決定する

ディスクキャッシュ,および2Wayキャッシュを使用する場合は,キャッシュデータファイルのコンパクションが必要です。

EADsサーバに格納するデータの量に応じて,「コンパクションの実施間隔(単位:時間)」を決定します。

コンパクションの処理については,「10.9 キャッシュデータファイルの使用量を削減する(キャッシュデータファイルをコンパクションする)」を参照してください。

(6) 更新データ用の容量を見積もる

キャッシュデータファイルには常に追記でデータが格納されるため,データを更新すると,キャッシュデータファイル内のデータ量が増加します。そのため,キャッシュデータファイルには,「コンパクションの実施間隔(単位:時間)」および「1回のコンパクションに掛かる時間(単位:時間)」の間に増加するデータ分の容量が必要となります。

1回のコンパクションを実行している間に更新されるデータ(更新データ)の容量を見積もります。更新データ用の容量を見積もる計算式を次に示します。

更新データ用の容量(単位:キロバイト)=

 1EADsサーバの1時間当たりの更新回数×レコード1件分のサイズ(単位:キロバイト)

 ×(コンパクションの実施間隔(単位:時間)+1回のコンパクションに掛かる時間(単位:時間))

1EADsサーバの1時間当たりの更新回数:

put,create,update,およびreplaceの実行回数

レコード1件分のサイズ:

4.4.1(2) レコード1件分のサイズを見積もる」で算出した値

コンパクションの実施間隔:

4.4.1(5) コンパクションの実施間隔を決定する」で決定した値

1回のコンパクションに掛かる時間:

この時間はシステムによって異なります。システムの運用前にコンパクションにかかる時間を確認し,その値を代入してください。

(7) キャッシュデータファイルに必要な容量を見積もる

キャッシュデータファイルに必要な容量を見積もる計算式を次に示します。

キャッシュデータファイルに必要な容量(単位:メガバイト)=

 (有効データの最大量(単位:キロバイト)×2

  +更新データ用の容量(単位:キロバイト))÷1,024

有効データの最大量:

4.4.1(4) 有効データの最大量を見積もる」で算出した値

更新データ用の容量:

4.4.1(6) 更新データ用の容量を見積もる」で算出した値

(8) キャッシュデータファイルのサイズおよび面数を設計する

4.4.1(7) キャッシュデータファイルに必要な容量を見積もる」で算出した,キャッシュデータファイルに必要な容量を基に,次の式を満たすように,1レンジ当たりのキャッシュデータファイルのサイズ,およびキャッシュデータファイルの面数を設計します。

キャッシュデータファイルに必要な容量(単位:メガバイト)≦

 1レンジ当たりのキャッシュデータファイルのサイズ(単位:メガバイト)×キャッシュデータファイルの面数

注※

キャッシュデータファイルの容量の拡張が考えられる場合は,その分の面数も考慮して決定してください。

1レンジ当たりのキャッシュデータファイルのサイズは,キャッシュ定義のeads.cache.disk.filesizeパラメタに指定します。

1レンジ当たりのキャッシュデータファイルの面数を見積もる計算式を次に示します。

1レンジ当たりのキャッシュデータファイルの面数=

 キャッシュデータファイルの面数+1

算出した値は,キャッシュ定義のeads.cache.disk.filenumパラメタに指定します。

(9) コンパクションの運用計画を確認する

システムの運用前に,コンパクションに掛かる時間,およびに確保される容量に問題がないことを確かめてください。

次の計算式を満たしていない場合,コンパクションがデータの更新に間に合わないため,容量不足によるエラーが発生するおそれがあります。

更新データ用の容量<1回のコンパクションで確保される容量

注意事項

上記の計算式を満たしていない原因がハードウェアの性能不足の場合,コンパクションの回数や実施間隔のチューニングだけでなく,ハードウェアの更新やホストの追加も考慮した対策を検討してください。