Hitachi

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


7.7.4 キャッシュの運用に依存するパラメタ

キャッシュの運用に依存するパラメタの一覧を次の表に示します。

なお,必ず指定するパラメタを太字で表記しています。

表7‒11 キャッシュの運用に依存するパラメタ一覧

項番

定義ファイル

パラメタ名

指定する値

デフォルト値

1

サーバ定義ファイル

eads.cache.disk.getError.isolate.enable

  • true

  • false

true

2

キャッシュ定義ファイル

eads.cache.type

  • Memory

  • Disk

  • 2Way

なし

3

eads.cache.eviction.policy

  • FIFO

  • LRU

  • None

None

4

eads.cache.eviction.keyCount

1024〜1073741823

なし

5

eads.cache.disk.info.dir

パス名

<運用ディレクトリ>/store

6

eads.cache.disk.<n>.dir

パス名

なし

7

eads.cache.disk.filesize

ファイルサイズ(16メガバイト〜128メガバイト)

なし

8

eads.cache.disk.filenum

ファイル数(8〜32768)

なし

9

eads.cache.disk.blocksize

データサイズ

  • 1キロバイト

  • 2キロバイト

  • 4キロバイト

  • 8キロバイト

  • 16キロバイト

  • 32キロバイト

  • 64キロバイト

  • 128キロバイト

1キロバイト

10

eads.cache.disk.transfer.interval

0〜60000(ミリ秒)

1000ミリ秒

11

eads.cache.disk.transfer.datasize

10240バイト〜2147483647バイト

102400バイト

12

eads.cache.disk.highSpecDrive.enable

  • true

  • false

false

13

eads.cache.disk.persistentMemory.enable

  • true

  • false

false

14

eads.cache.disk.persistentMemory.device

パス名

なし

15

eads.cache.disk.persistentMemory.blocksize

  • 256バイト

  • 512バイト

  • 1024バイト

256バイト

注意事項

キャッシュ定義ファイルの次のパラメタの定義内容は,クラスタを構成する全EADSサーバで同じになるようにしてください。同じでないとキャッシュを作成できません。

注※

ディスクキャッシュの格納先として不揮発性メモリを使用しない場合はeads.cache.disk.<n>.dirパラメタが,使用する場合はeads.cache.disk.persistentMemory.deviceパラメタが必ず指定するパラメタになります。

〈この項の構成〉

(1) サーバ定義ファイル

(a) eads.cache.disk.getError.isolate.enable

ディスクキャッシュおよび2WayキャッシュでディスクI/Oエラーが発生した場合に,EADSサーバを縮退させるかどうかを指定します。

true:

ディスクI/Oエラーが発生した場合に,EADSサーバを縮退させます。

false:

ディスクI/Oエラーが発生しても,次に示すデータの整合性に影響を与えないAPIでのディスクI/Oエラーの場合は,EADSサーバを縮退させません。

  • API(get,getAll)

  • Groupインタフェースの次に示すメソッド

    ・getLastUpdateTime()

    ・getValueUsageSize()

  • Storeインタフェースの次に示すメソッド

    ・getLastUpdateTime()

    ・getEHeapUsageSize()

    ・getDiskUsageSize()

  • eztool getコマンド

APIには,ユーザファンクション内で実行されるAPIを含みます。

このパラメタにfalseを指定すると,一時的なディスク障害によるディスクI/Oエラーがget処理などで発生してもEADSサーバが縮退しません。このため,可用性の向上が期待できます。

しかし,get処理だけが長時間続くようなAPの場合は,恒久的なディスク障害が発生しても縮退処理が行われないため,get処理のエラーが長時間にわたって発生してしまうおそれがあります。

なお,ディスクキャッシュおよび2Wayキャッシュを使用しない場合は,このパラメタの指定値は無視されます。

(2) キャッシュ定義ファイル

(a) eads.cache.type

キャッシュのキャッシュタイプを指定します。

Memory:

メモリキャッシュを使用します。

Disk:

ディスクキャッシュを使用します。

2Way:

2Wayキャッシュを使用します。

(b) eads.cache.eviction.policy

データの自動削除ポリシーを指定します。データ自動削除機能を使用して,しきい値を超えたデータを削除する場合の動作を指定します。

FIFO:

データの更新順が古いデータから自動的に削除します。

LRU:

データの更新順または参照順が古いデータから自動的に削除します。

None:

データを自動で削除しません(データ自動削除機能を使用しません)。

注意事項
  • データ総量監視機能が無効(共通設定ファイルのeads.cache.limiter.enableパラメタにfalseが指定されている)な場合,データ自動削除機能を使用できません。そのため,None以外を指定できません。

  • eads.cache.typeパラメタに2Wayが指定されている場合,データ自動削除機能を使用できません。そのため,None以外を指定できません。

(c) eads.cache.eviction.keyCount

データ自動削除機能で,データを削除するためのしきい値として使用する1レンジ当たりのデータ件数を指定します。

このパラメタの指定値を超えるデータは格納されません(自動的に削除されます)。

注意事項

eads.cache.eviction.policyパラメタにNoneが指定された場合,このパラメタに指定された値は無視されます。

(d) eads.cache.disk.info.dir

キャッシュ情報ファイル,およびキャッシュインデックスファイルの格納先を指定します。

格納先ディレクトリのパスには,最大200文字の半角英数字(0〜9,A〜Z,a〜z),アンダースコア(_),コロン(:),およびセパレータ(スラッシュ(/))が指定できます。

このパラメタに指定したディレクトリ下に格納されるファイルのファイル名については,「7.7.2(2) キャッシュファイルの格納先の設定」を参照してください。

なお,ディスクキャッシュの格納先として不揮発性メモリを使用する場合(eads.cache.disk.persistentMemory.enableパラメタにtrueを指定している場合),キャッシュインデックスファイルは,eads.cache.disk.persistentMemory.deviceパラメタで指定したデバイスファイルに作成されます。

注意事項

同一EADSサーバ内で,このパラメタの指定値の絶対パスとeads.cache.disk.<n>.dirパラメタの指定値の絶対パスが同じにならないようにしてください。

(e) eads.cache.disk.<n>.dir

キャッシュデータファイルの格納先を指定します。

<n>には,1〜データの多重度(eads.replication.factorパラメタの指定値)の整数を指定します。

データを多重化している場合は,データの多重度の数だけ,このパラメタを指定します。

格納先ディレクトリのパスには,最大1,024文字の半角英数字(0〜9,A〜Z,a〜z),アンダースコア(_),コロン(:),およびセパレータ(スラッシュ(/))が指定できます。

このパラメタに指定したディレクトリ下に格納されるファイルのファイル名については,「7.7.2(2) キャッシュファイルの格納先の設定」を参照してください。

注意事項
  • 同一EADSサーバ内で,このパラメタの指定値の絶対パスとeads.cache.disk.info.dirパラメタの指定値の絶対パスが同じにならないようにしてください。

  • eads.cache.disk.info.dirパラメタに指定したディレクトリ直下のディレクトリを指定する場合,キャッシュ名と同じ名前のディレクトリを指定しないでください。

  • クラスタを構成するEADSサーバ間で,キャッシュデータファイルの格納先にSSDとHDDを混在させるなど,極端に速度差が発生するようなディスク構成にすることはできません。

  • 1台の物理マシン上で複数のEADSサーバを動作させる場合,EADSサーバごとに異なる格納先を指定してください。

  • ディスクキャッシュの格納先として不揮発性メモリを使用する場合(eads.cache.disk.persistentMemory.enableパラメタにtrueを指定する場合),このパラメタの指定値は無視されます。

(f) eads.cache.disk.filesize

1レンジ当たりのキャッシュデータファイルのサイズ(単位:メガバイト)を指定します。

(g) eads.cache.disk.filenum

1レンジ当たりのキャッシュデータファイルの面数を指定します。

(h) eads.cache.disk.blocksize

キャッシュデータファイルに1回で書き込むデータサイズ(単位:キロバイト)を指定します。

キャッシュデータファイルの格納先の媒体がHDDの場合は,このパラメタには1キロバイト(デフォルト)を指定してください。SSDの場合は,SSDのページサイズを指定してください。

注意事項

ディスクキャッシュの格納先として不揮発性メモリを使用する場合(eads.cache.disk.persistentMemory.enableパラメタにtrueを指定する場合),1回で書き込むデータサイズはこのパラメタではなく,eads.cache.disk.persistentMemory.blocksizeパラメタで指定した値が有効になります。

参考

ディスクキャッシュの格納先として不揮発性メモリを使用する場合でも,このパラメタに不正な値が指定されているとエラーになります。ディスクキャッシュの格納先として不揮発性メモリを使用する場合には,このパラメタをキャッシュ定義ファイル上でコメントアウトしておくことを推奨します。

(i) eads.cache.disk.transfer.interval

ディスクキャッシュ,および2Wayキャッシュの復旧処理でのデータ送信間隔(単位:ミリ秒)を指定します。

復旧処理では,復旧対象のEADSサーバでこのパラメタに指定した値が適用されます。

このパラメタの指定値とキャッシュ定義のeads.cache.disk.transfer.datasizeパラメタの指定値は,次の式を満たすように設定してください。

復旧処理のデータ送信に使用できる帯域(単位:bps)≧

 MAX(各キャッシュの復旧処理のデータ送信に使用できる帯域(単位:bps))

MAX:

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

(例)MAX(3×6,4+7)の計算結果は18となります。

各キャッシュの復旧処理のデータ送信に使用できる帯域(単位:bps):

キャッシュごとに,次の式で求めます。

  • メモリキャッシュの場合

    復旧処理のデータ送信に使用できる帯域(単位:bps)≧

     (復旧処理で送信するデータサイズ(単位:バイト)×8)

     ÷{(復旧処理でのデータ送信間隔(単位:ミリ秒)

     +データ送信に掛かる時間(単位:ミリ秒))÷1,000}

復旧処理で送信するデータサイズ(単位:バイト):

サーバ定義のeads.transfer.datasizeパラメタの指定値

復旧処理でのデータ送信間隔(単位:ミリ秒):

サーバ定義のeads.transfer.intervalパラメタの指定値

データ送信に掛かる時間(単位:ミリ秒):

サーバ定義のeads.transfer.datasizeパラメタに指定したサイズのデータ送信に掛かる時間(単位:ミリ秒)

  • ディスクキャッシュおよび2Wayキャッシュの場合

    復旧処理のデータ送信に使用できる帯域(単位:bps)≧

     (復旧処理で送信するデータサイズ(単位:バイト)×8)

     ÷{(復旧処理でのデータ送信間隔(単位:ミリ秒)

     +データ送信に掛かる時間(単位:ミリ秒))÷1,000}

復旧処理で送信するデータサイズ(単位:バイト):

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

復旧処理でのデータ送信間隔(単位:ミリ秒):

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

データ送信に掛かる時間(単位:ミリ秒):

キャッシュ定義のeads.cache.disk.transfer.datasizeパラメタに指定したサイズのデータ送信に掛かる時間(単位:ミリ秒)

9.3.2(5) クラスタの復旧処理」の図中の「復旧処理(データ送信)」に掛かる時間を示します。この時間は環境によって異なります。

復旧処理に掛かる時間を短くすると,復旧処理の通信負荷が高くなります。逆に,復旧処理の通信負荷を低くすると,復旧処理に掛かる時間が長くなります。

メモリキャッシュを使用する場合,このパラメタの指定は無効になり,サーバ定義のeads.transfer.intervalパラメタの指定値が有効となります。

復旧処理については,「9.3.2(5) クラスタの復旧処理」を参照してください。

注意事項

ディスクの書き込み性能を超えないように,このパラメタの指定値を決定してください。

(j) eads.cache.disk.transfer.datasize

ディスクキャッシュ,および2Wayキャッシュの復旧処理で送信するデータサイズ(単位:バイト)を指定します。

復旧処理では,復旧対象のEADSサーバでこのパラメタに指定した値が適用されます。

復旧処理では,データの整合性を回復するために,稼働中のEADSサーバが復旧対象のEADSサーバにデータを送信します。復旧対象のEADSサーバのeads.cache.disk.transfer.intervalパラメタに指定した間隔で,このパラメタの指定値を超えるまで,10キロバイト単位でデータを連続して送信します。

メモリキャッシュを使用する場合,このパラメタの指定は無効になり,サーバ定義のeads.transfer.datasizeパラメタの指定値が有効となります。

注意事項
  • 復旧処理では最低1個のデータを送信します。そのため,送信データのサイズが,このパラメタの指定値を超えることがあります。なお,このパラメタにEADSサーバに格納しているデータのサイズよりも小さい値を指定しても,送信量を制限することはできません。

  • 復旧データの転送速度がディスクの書き込み速度を超えないように,このパラメタの指定値を決定してください。

(k) eads.cache.disk.highSpecDrive.enable

高性能SSDに対応したファイルアクセスをするかどうかを指定します。

このパラメタにtrueを指定した場合,高性能SSDに対応した次のファイルアクセスを行います。

  1. キャッシュデータファイルをDirectIOモードで開き,当該キャッシュデータファイルのページキャッシュを介さないで,ファイルにアクセスします。

  2. キャッシュデータファイルの作成直後に全データを0で埋め尽くす(ゼロフィル)処理を実行し,データ更新時の書き込み回数と書き込みデータ量を削減します。

    注意事項
    • 高性能SSD以外(HDDなどの記憶装置)では,trueを指定しないでください。

    • このパラメタにtrueを指定した場合は,追加でゼロフィル処理を行うため,falseを指定した場合に比べて,次に示すコマンドの処理時間が長くなるおそれがあります。

      eztool createcache(キャッシュの作成)

      eztool resume(キャッシュの再開)

      そのため,このパラメタにtrueを指定する場合は,eztoolコマンドの-tオプション(コマンドのタイムアウト時間)を当該コマンドの処理時間よりも長くなるように設定することを推奨します。

    • このパラメタにtrueを指定した場合は,追加でゼロフィル処理を行うため,falseを指定した場合に比べて,次に示すコマンドの処理時間が長くなるおそれがあります。

      eztool compaction(キャッシュデータファイルのコンパクション)

      ezstart -rezserver -r(EADSサーバのクラスタへの復旧)

      そのため,このパラメタにtrueを指定する場合は,当該コマンドの処理が想定時間内に終わることを事前に確認することを推奨します。

    • このパラメタにtrueを指定した場合,キャッシュデータファイルへの書き込み回数が,falseを指定した場合(1回)に比べて,1回増える(2回になる)ため,高性能SSDの寿命を計算する際には考慮してください。

    • このパラメタとeads.cache.disk.persistentMemory.enableパラメタに,同時にtrueは指定できません。

(l) eads.cache.disk.persistentMemory.enable

ディスクキャッシュの格納先として,不揮発性メモリを使用するかどうかを指定します。

不揮発性メモリはディスクキャッシュでだけ使用できます。また,高性能SSDに対応したファイルアクセスとは同時に使用できません。このため,このパラメタにtrueを指定する場合には次の条件を満たす必要があります。

(m) eads.cache.disk.persistentMemory.device

キャッシュデータファイルおよびキャッシュインデックスファイルの格納先となる不揮発性メモリのデバイスファイルを指定します。

不揮発性メモリのデバイスファイルには,最大200文字の半角英数字(0〜9,A〜Z,a〜z),アンダースコア(_),ピリオド(.),およびセパレータ(スラッシュ(/))が指定できます。

このパラメタに指定したデバイスファイルに格納されるファイルのファイル名については,「7.7.2(2) キャッシュファイルの格納先の設定」を参照してください。

注意事項
  • eads.cache.disk.persistentMemory.enableパラメタにfalseを指定している場合,このパラメタに指定された値は無視されます。

  • 同一EADSサーバ内で,このパラメタの指定値の絶対パスと,他キャッシュ定義ファイルの,このパラメタの指定値の絶対パスが同じにならないようにしてください。

  • 1台の物理マシン上で,複数のEADSサーバを動作させる場合,他のEADSサーバが使用している不揮発性メモリのデバイスファイルは,このパラメタに指定できません。

(n) eads.cache.disk.persistentMemory.blocksize

不揮発性メモリ上のキャッシュデータファイルに1回で書き込むデータサイズ(単位:バイト)を指定します。

このパラメタには,2の累乗数(256,512,1024)が指定できます。

eads.cache.disk.persistentMemory.enableパラメタにtrueを指定している場合,1回で書き込むデータサイズはeads.cache.disk.blocksizeパラメタではなく,このパラメタで指定した値が有効になります。

注意事項
  • eads.cache.disk.persistentMemory.enableパラメタにfalseを指定している場合,このパラメタに指定された値は無視されます。

  • 使用する不揮発性メモリに合わせて値を指定してください。詳細については,リリースノートを参照してください。使用する不揮発性メモリに関する記載がリリースノートにない場合は,キャッシュ定義ファイル上でこのパラメタをコメントアウトしてください。