15.2.5 グローバルバッファが使用する共用メモリの計算式
(1) 影響分散スタンバイレス型系切り替え機能を使用しない場合
グローバルバッファが使用する共用メモリサイズは,ディクショナリサーバ又はバックエンドサーバごとに計算式1に代入して求めます。サーバマシンごとに算出する場合,pdbuffer文のオプションの指定によって計算対象になるかどうかが異なります。pdbuffer文のオプションによる計算条件を次の表に示します。
pdbuffer文のオプション |
計算条件 |
---|---|
-r |
-rで指定したRDエリアがあるサーバの場合,計算対象とします。 |
-i |
-iで指定したインデクスが格納されているRDエリアがあるサーバの場合,計算対象とします。 |
-b |
-bで指定したRDエリアがあるサーバの場合,計算対象とします。 |
-o |
そのサーバにある全RDエリア中でpdbuffer -rで指定していないRDエリアがある場合,計算対象とします。 |
pd_dbbuff_modifyオペランドにYを指定している場合は,計算式2を加算します。計算式1及び2で求めた値を合計した値が,そのサーバでグローバルバッファが使用する共用メモリの所要量です。
pd_shm_reuseオペランドにYを指定している場合は,グローバルバッファが使用する共用メモリ所要量を計算式3で見積もってください。
pd_dbbuff_attributeオペランドにfixedを指定している場合,実メモリ上にページ固定されるため,仮想メモリを構成する実メモリがそのサイズ分減少します。また,残り実メモリとスワップ領域で構成される仮想メモリからもそのサイズ分確保されます。
なお,pdbufferオペランドを省略した場合,HiRDBが共用メモリサイズを自動計算するので見積もりは必要ありません。
(a) グローバルバッファが使用する共用メモリを実メモリ上に固定しない場合
グローバルバッファが使用する共用メモリを実メモリ上に固定しない場合(pd_dbbuff_attributeオペランドにfreeを指定した場合)は,次の計算式を使用します。
計算式の種類 |
共用メモリの計算式(単位:キロバイト) |
---|---|
計算式1 |
●32ビットモードの場合 n Σ{ i=1 ↑{752+64+(296+64※1)×(Pi+4) +(124+80※2+96×A×Mi)×Ui}÷4096↑×4096 +Si×{Pi+4+(Ui×Mi×A)} }÷1024 ●64ビットモードの場合 n Σ{管理領域部+データ格納部}÷1024 i=1 管理領域部: ↑{944+64+(480+112※1)×(Pi+4) +(176+96※2+136×A×Mi)×Ui}÷4096↑×4096 データ格納部: Si×{Pi+4+(Ui×Mi×A)} |
計算式2 |
●32ビットモードの場合 {↑(↑(s×1024÷2)÷8↑+112)÷2048↑×2048× ↑a÷(s×1024)↑}÷1024 ●64ビットモードの場合 {↑(↑(s×1024÷2)÷8↑+144)÷2048↑×2048× ↑a÷(s×1024)↑}÷1024 |
計算式3 |
↑(計算式1+計算式2※3+ n Σ{管理領域部}÷1024)÷(s×1024)↑×(s×1024) i=1 管理領域部: ●32ビットモードの場合 ↑{752+64+(296+64※1)×(Pi+4) +(124+80※2+96×A×Mi)×Ui}÷4096↑×4096 ●64ビットモードの場合 ↑{944+64+(480+112※1)×(Pi+4) +(176+96※2+136×A×Mi)×Ui}÷4096↑×4096 |
n:グローバルバッファプール数
i:計算対象のグローバルバッファプール定義
P:グローバルバッファ面数
A:非同期READ機能を使用する場合は2,使用しない場合は1
M:一括入力最大ページ数
U:同時実行最大プリフェッチ数
S:グローバルバッファに割り当てたRDエリアの最大ページ長
s:SHMMAX指定値
a:計算式1の総計
注※1 LOB用グローバルバッファの場合に加算します。
注※2 pd_max_ard_processオペランドに1以上を指定した場合に加算します。
注※3 pd_dbbuff_modifyオペランドにYを指定した場合に加算します。
(b) グローバルバッファが使用する共用メモリを実メモリ上に固定する場合
グローバルバッファが使用する共用メモリを実メモリ上に固定する場合(pd_dbbuff_attributeオペランドにfixedを指定した場合)は,次の計算式を使用します。
計算式の種類 |
共用メモリの計算式(単位:キロバイト) |
---|---|
計算式1 |
●32ビットモードの場合 n Σ{ i=1 ↑{↑{752+64+(296+64※1)×(Pi+4) +(124+80※2+96×A×Mi)×Ui}÷4096↑×4096 +Si×{Pi+4+(Ui×Mi×A)}}÷p↑×p }÷1024 ●64ビットモードの場合 n Σ{↑{管理領域部+データ格納部}÷p↑×p}÷1024 i=1 管理領域部: ↑{944+64+(480+112※1)×(Pi+4) +(176+96※2+136×A×Mi)×Ui}÷4096↑×4096 データ格納部: Si×{Pi+4+(Ui×Mi×A)} |
計算式2 |
●32ビットモードの場合 {↑{↑(↑(s×1024÷2)÷8↑+112)÷2048↑×2048× ↑a÷(s×1024)↑}÷p↑×p}÷1024 ●64ビットモードの場合 {↑{↑(↑(s×1024÷2)÷8↑+144)÷2048↑×2048× ↑a÷(s×1024)↑}÷p↑×p}÷1024 |
計算式3 |
↑(計算式1+計算式2※3+ n Σ{管理領域部}÷1024)÷(↑(s×1024÷p)↑×p)↑ i=1 ×(↑(s×1024÷p)↑×p) 管理領域部: ●32ビットモードの場合 ↑{752+64+(296+64※1)×(Pi+4) +(124+80※2+96×A×Mi)×Ui}÷4096↑×4096 ●64ビットモードの場合 ↑{944+64+(480+112※1)×(Pi+4) +(176+96※2+136×A×Mi)×Ui}÷4096↑×4096 |
n:グローバルバッファプール数
i:計算対象のグローバルバッファプール定義
P:グローバルバッファ面数
A:非同期READ機能を使用する場合は2,使用しない場合は1
M:一括入力最大ページ数
U:同時実行最大プリフェッチ数
S:グローバルバッファに割り当てたRDエリアの最大ページ長
- p:WindowsのLarge Pageでのページサイズ
-
pdntenvコマンドで確認できます。
s:SHMMAX指定値
a:計算式1の総計
注※1 LOB用グローバルバッファの場合に加算します。
注※2 pd_max_ard_processオペランドに1以上を指定した場合に加算します。
注※3 pd_dbbuff_modifyオペランドにYを指定した場合に加算します。
(2) 影響分散スタンバイレス型系切り替え機能を使用する場合
影響分散スタンバイレス型系切り替え機能を使用する場合,ユニットごとに計算式1に代入して求めます。ユニットごとに算出する場合,pdbuffer文のオプションの指定によって計算対象になるかどうかが異なります。pdbuffer文のオプションによる計算条件を次の表に示します。
pdbuffer文のオプション |
計算条件 |
---|---|
-r,-b |
-rで指定したRDエリアで,同じHAグループに属するRDエリアの場合,計算対象とします。 |
-i |
-iで指定したインデクスが格納されているRDエリアが,同じHAグループに属するRDエリアの場合,計算対象とします。 |
-o |
同じHAグループ内で,pdbuffer -rオプションで指定していないRDエリアがある場合,計算対象とします。 |
pd_shm_reuseオペランドにYを指定している場合は,グローバルバッファが使用する共用メモリ所要量を計算式2で見積もってください。
pd_dbbuff_attributeオペランドにfixedを指定している場合,実メモリ上にページ固定されるため,仮想メモリを構成する実メモリがそのサイズ分減少します。また,残り実メモリとスワップ領域で構成される仮想メモリからもそのサイズ分確保されます。なお,pdbufferオペランドを省略した場合,HiRDBが共用メモリサイズを自動計算するので見積もりは必要ありません。
(a) グローバルバッファが使用する共用メモリを実メモリ上に固定しない場合
グローバルバッファが使用する共用メモリを実メモリ上に固定しない場合(pd_dbbuff_attributeオペランドにfreeを指定した場合)は,次の計算式を使用します。
計算式の種類 |
共用メモリの計算式(単位:キロバイト) |
---|---|
計算式1 |
●32ビットモードの場合 n Σ{ i=1 (96+((752×(A+B))+(288×(F+(8×(A+B)))) +8×F×(A+B)+16)+H+D) +2048+G+(E×F+(8×(A+B))) }÷1024 ●64ビットモードの場合 n Σ{管理領域部+データ格納部}÷1024 i=1 管理領域部: ((144+((944×(A+B))+(464×(F+(8×(A+B)))) +(16×F×(A+B))))+16+H+D) データ格納部: 2048+G+(E×F+(8×(A+B))) |
計算式2 |
↑(計算式1+ n Σ{管理領域部}÷1024)÷(s×1024)↑×(s×1024) i=1 管理領域部: ●32ビットモードの場合 (96+((752×(A+B))+(288×(F+(8×(A+B)))) +8×F×(A+B)+16)+H+D) ●64ビットモードの場合 ((144+((944×(A+B))+(464×(F+(8×(A+B)))) +(16×F×(A+B))))+16+H+D) |
n:このユニットに割り当てられるグローバルバッファプール数
i:計算対象のグローバルバッファプール定義
A:ホストBES数
B:受け入れ可能なゲストBESの最大数
C:一括入力ページ数(pdbuffer -pに指定した値)
- D:プリフェッチ機能使用時(pdbuffer -m指定)に加算します。
-
32ビットモードの場合
2×(((80×U×C)+(80×U)+(124×U)+(8×U×C))×(A+B))
64ビットモードの場合
2×(((112×U×C)+(96×U)+(176×U)+(16×U×C))×(A+B))
- E:pdbuffer文のオプションの指定によって値が異なります。オプションと計算式を次に示します。
-
pdbuffer文のオプション
最大値の計算式
-r,-b
(MAX(バッファサイズ(pdbuffer -lの値),MAX(指定したRDエリアで同じHAグループに属するRDエリアのページサイズ)))
-i
(MAX(バッファサイズ(pdbuffer -lの値),MAX(-iで指定したインデクスが格納されているRDエリアが同じHAグループに属するRDエリアのページサイズ)))
-o
(MAX(バッファサイズ(pdbuffer -lの値),MAX(同じHAグループ内でpdbuffer -rオプションで指定していないRDエリアのページサイズ)))
F:バッファ面数(pdbuffer -nの値)
- G:プリフェッチ機能使用時(pdbuffer -m指定)に加算します。
-
2×((E×U×C)×(A+B))
- H:LOB用RDエリアが指定されている(pdbuffer -b指定)場合に加算します。
-
32ビットモードの場合:64×(F+(8×(A+B)))
64ビットモードの場合:112×(F+(8×(A+B)))
U:同時実行最大プリフェッチ数(pdbuffer -mの値)
(b) グローバルバッファが使用する共用メモリを実メモリ上に固定する場合
グローバルバッファが使用する共用メモリを実メモリ上に固定する場合(pd_dbbuff_attributeオペランドにfixedを指定した場合)は,次の計算式を使用します。
計算式の種類 |
共用メモリの計算式(単位:キロバイト) |
---|---|
計算式1 |
●32ビットモードの場合 n Σ{ i=1 {↑{(96+((752×(A+B))+(288×(F+(8×(A+B)))) +8×F×(A+B)+16)+H+D) +2048+G+(E×F+(8×(A+B)))}÷p↑}×p }÷1024 ●64ビットモードの場合 n Σ{↑{管理領域部+データ格納部}÷p↑×p}÷1024 i=1 管理領域部: ((144+((944×(A+B))+(464×(F+(8×(A+B)))) +(16×F×(A+B))))+16+H+D) データ格納部: 2048+G+(E×F+(8×(A+B))) |
計算式2 |
↑(計算式1+ n Σ{管理領域部}÷1024)÷(↑(s×1024÷p)↑×p)↑ i=1 ×(↑(s×1024÷p)↑×p) 管理領域部: ●32ビットモードの場合 (96+((752×(A+B))+(288×(F+(8×(A+B)))) +8×F×(A+B)+16)+H+D) ●64ビットモードの場合 ((144+((944×(A+B))+(464×(F+(8×(A+B)))) +(16×F×(A+B))))+16+H+D) |
n:このユニットに割り当てられるグローバルバッファプール数
i:計算対象のグローバルバッファプール定義
A:ホストBES数
B:受け入れ可能なゲストBESの最大数
C:一括入力ページ数(pdbuffer -pに指定した値)
- D:プリフェッチ機能使用時(pdbuffer -m指定)に加算します。
-
32ビットモードの場合
2×(((80×U×C)+(80×U)+(124×U)+(8×U×C))×(A+B))
64ビットモードの場合
2×(((112×U×C)+(96×U)+(176×U)+(16×U×C))×(A+B))
- E:pdbuffer文のオプションの指定によって値が異なります。オプションと計算式を次に示します。
-
pdbuffer文のオプション
最大値の計算式
-r,-b
(MAX(バッファサイズ(pdbuffer -lの値),MAX(指定したRDエリアで同じHAグループに属するRDエリアのページサイズ)))
-i
(MAX(バッファサイズ(pdbuffer -lの値),MAX(-iで指定したインデクスが格納されているRDエリアが同じHAグループに属するRDエリアのページサイズ)))
-o
(MAX(バッファサイズ(pdbuffer -lに指定した値),MAX(同じHAグループ内でpdbuffer -rオプションで指定していないRDエリアのページサイズ)))
F:バッファ面数(pdbuffer -nの値)
- G:プリフェッチ機能使用時(pdbuffer -m指定)に加算します。
-
2×((E×U×C)×(A+B))
- H:LOB用RDエリアが指定されている(pdbuffer -b指定)場合に加算します。
-
32ビットモードの場合:64×(F+(8×(A+B)))
64ビットモードの場合:112×(F+(8×(A+B)))
U:同時実行最大プリフェッチ数(pdbuffer -mの値)
- p:WindowsのLarge Pageでのページサイズ
-
pdntenvコマンドで確認できます。