スケーラブルデータベースサーバ HiRDB Version 8 システム導入・設計ガイド(Windows(R)用)

[目次][索引][前へ][次へ]

15.1.3 ユニットコントローラが使用する共用メモリの計算式

<この項の構成>
(1) 32ビットモードのHiRDBの場合
(2) 64ビットモードのHiRDBの場合

(1) 32ビットモードのHiRDBの場合

HiRDB/シングルサーバの開始から終了までの間にユニットコントローラが使用する共用メモリは,次に示すHiRDBのプロセスの項目すべてを加算した値です。

なお,ユニットコントローラ全体の共用メモリサイズは2ギガバイト以内になるようにしてください。

プロセスの種類 共用メモリの計算式(単位:バイト)
スケジューラ pd_utl_exec_modeの値が0の場合
 {↑(432+304×n)÷1024↑+352+x}×1024
pd_utl_exec_modeの値が1の場合
 {↑(432+304×n)÷1024↑+↑(m×2000+136)÷1024↑+y}×1024
x:シングルサーバの場合:116+5×(m+3)+14
y:シングルサーバの場合:5×(m+3)+14
m:pd_max_usersの値

n:ユニット内のサーバ数+ユニット内ユティリティサーバ数+1
ユニット内ユティリティサーバ数:28+12
ロックサーバ (192+48+c+d+48+4096+g+48+i+48+4096+48+n+16+t+u+16)
 ×pd_lck_pool_partitionの値
c:pd_lck_hash_entryを省略,又は0を指定している場合:
   (↓(8+4×MAX(((p+3)×(pd_max_access_tablesの値+4+5×2)
   +↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓×6)÷10,11261))÷16↓+1)×16
  pd_lck_hash_entryに2以上の素数でない値を指定している場合:
   (↓(8+4×pd_lck_hash_entryの値を超えない最大の素数)÷16↓+1)
   ×16
  pd_lck_hash_entryに1,又は素数を指定している場合:
   (↓(8+4×pd_lck_hash_entryの値)÷16↓+1)×16
d:((p+3)×(pd_max_access_tablesの値+4+5×2)+
  ↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓×6)×96
g:pd_utl_exec_modeの値=1,かつp>32の場合:
   ((p+3)×3+p)×256
  pd_utl_exec_modeの値=0,又はp≦32の場合:
   ((p+3)×3+32)×256
i:pd_utl_exec_modeの値=1,かつp>32の場合:
   ((↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓×8+((p+3)
   ×(pd_max_access_tablesの値+4))×2)
   +p×(pd_max_rdarea_noの値+1)+(p+3)×2×2×5)
   を偶数に切り上げた値×64
  pd_utl_exec_modeの値=0,又はp≦32の場合:
   ((↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓×8+((p+3)
   ×(pd_max_access_tablesの値+4))×2)
   +32×(pd_max_rdarea_noの値+1)+(p+3)×2×2×5)
   を偶数に切り上げた値×64
n:pd_utl_exec_modeの値=1,かつp>32の場合:
   ((p+3)×3+p)×48
  pd_utl_exec_modeの値=0,又はp≦32の場合:
   ((p+3)×3+32)×48
p:pd_max_usersの値
t:pd_utl_exec_modeの値=1,かつp>32の場合:
   32+((p+3)×3+p)×↑pd_max_open_holdable_cursorsの値÷16↑×4
  pd_utl_exec_modeの値=0,又はp≦32の場合:
   32+((p+3)×3+32)×↑pd_max_open_holdable_cursorsの値÷16↑×4
u:pd_utl_exec_modeの値=1,かつp>32の場合:
   32+((↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓×8
   +((p+3)×(pd_max_access_tablesの値+4))×2)
   +p×(pd_max_rdarea_noの値+1)+(p+3)×2×2×5)
   を偶数に切り上げた値×↑pd_max_open_holdable_cursorsの値÷16↑×4
  pd_utl_exec_modeの値=0,又はp≦32の場合:
   32+((↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓×8+
   ((p+3)×(pd_max_access_tablesの値+4))×2)
   +32×(pd_max_rdarea_noの値+1)+(p+3)×2×2×5)
   を偶数に切り上げた値×↑pd_max_open_holdable_cursorsの値÷16↑×4
トランザクションサーバ 288+32+192×m×2+1028
+(420+564+256+384×2+128)×(m×2+7)+256×2
m:pd_max_usersの値
タイマサーバ 32×(pd_max_usersの値+3)×(1+ユニット内ユティリティサーバ数+1)+1440
 
ユニット内ユティリティサーバ数:26+12
統計ログサーバ 384+128×16+32+288×2+1024+128×3+pd_stj_buff_sizeの値×1024×3+64+4096+8192
プロセスサーバ 160+512×a+96+256+(pd_max_server_processの値+50)×(256+144)+16+8×16+16+16+48+48×(pd_module_trace_maxの値+1)
 
a:シングルサーバの場合:125
システムマネジャ 640+(44+4)×a×2+(100+4)×(b+30+2)+(100+4)×(c+1)+40×b×14+256+256+36×d+12×e+8+5844+212+f+16+1024+272×h
a:シングルサーバの定義数
b:ユニット内のシングルサーバ数
c:ユニット数
d:pdunitオペランドの-cオプションの指定数
e:pdcltgrpオペランド指定数
f:2052+128×(g+3)
g:シングルサーバの場合:92
h:pd_security_host_groupオペランドに指定したホストに対応するIPアドレスの数
  pd_security_host_groupオペランドを指定していない場合は0
ネームサーバ 169984
ノードマネジャ ↑(1152+288×全ユニット数+80×全サーバ数+1536+800
 +56×ユニット内のサーバ数+240×A+44×A+28×A+16×B+32)
 ÷1024↑×1024

A:pd_utl_exec_mode = 0の場合:1024
pd_utl_exec_mode = 1で,ユニット内にシングルサーバがある場合:pd_max_usersの値×10+400
pd_utl_exec_mode = 1で,ユニット内にシングルサーバがない場合:pd_max_usersの値×7
なお,Aの値が1024を超えない場合は,Aを1024に置き換えて計算してください。

B:pdcltgrpオペランドを指定しない場合:0
pdcltgrpオペランドを指定する場合:pdcltgrpオペランドの指定数+1
I/Oサーバ ↑(28+(↑(32+A)÷32↑×32))÷128↑×128

A:pd_large_file_use=Nを指定した場合
3248+(14+16)×808+1×272+534×272+16×272+pd_max_file_no値×808
pd_large_file_use=Y(又は省略)を指定した場合
A=3248+(14+16)×972+1×276+534×276+16×276+pd_max_file_no値×972
ログサーバ 32+48+128×19+384+128×7+1024+512
+↑(128+256+160+8+64)÷pd_log_rec_lengの値↑×pd_log_rec_lengの値
+64+4096×2+(736+512)×B
+128×pd_log_write_buff_countの値
+(pd_log_write_buff_countの値+A)
×↑{pd_log_max_data_sizeの値+(68+44+96+160)}÷4096↑×4096
+C+↑{(B+1)÷12}↑× 8320
 
A:16
B:pdlogadfg -d sysオペランドの指定数
C:512
シンクポイントダンプサーバ ↑(368+1456×2)÷1024↑×1024
+↓{(96+80+208+208)+192×(pdlogadfg -d spdの指定数)
+416×(pdlogadpf -d spdの指定数)+1023}
÷1024↓×1024
ユニット共通 a+b+64+(m+3)×c+64+48+d+e
+(pd_max_server_processの値+100)×(48+16)+32
+(pd_max_server_processの値+100+384)×32+32+f+g+h+i
+(pd_max_server_processの値+127)×48+32
 
a:25360+p×4
b:2988
c:1952
d:32×32
e:64+64×{(m+3)×2
 +MAX(5,↓[m+3]÷10↓)+7}
f:512×(13+3)×2
g:{↓(96+pd_lck_until_disconnect_cntの値×112+4095)÷4096↓}
  ×4096×2
h:↓(pd_registered_portで指定したポート番号の数×16+32
  +1023)÷1024↓×1024
  pd_registered_portを指定していない場合は0
i:kが2以上の場合は32+(8+8×k)×n
  それ以外の場合は0
k:pd_lck_pool_partitionの値
m:pd_max_usersの値
n:(m+3)×2+MAX{5,↓(m+3)÷10↓}+7
p:pd_dbbuff_modifyにYを指定している場合:16+pd_max_add_dbbuff_shm_noの値+pd_max_resident_rdarea_shm_noの値
 上記以外:16+pd_max_resident_rdarea_shm_noの値
トランザクションログサーバ 1024+512×A
+{
  128×B+128
  +[F+↑(128+256+8+224)÷pd_log_rec_lengの値↑×pd_log_rec_lengの値
  +↑(pd_log_max_data_sizeの値+68+44+96+160)
  ÷pd_log_rec_lengの値↑×pd_log_rec_lengの値]×D
  +E+(48+8)×B×2
 }×ユニット内のサーバ数
+584×B+128×B+64×B×C+128
+{
  F+↑(128+256+8+224)÷pd_log_rec_lengの値↑×pd_log_rec_lengの値
  +↑(pd_log_max_data_sizeの値+68+44+96+160)
  ÷pd_log_rec_lengの値↑×pd_log_rec_lengの値

+E+(48+8)×(B×2+2)
 
A:2
B:7+pd_max_usersの値×2
C:1
D:シングルサーバの場合,pd_log_rollback_buff_countの値が0のときは8,
  それ以外のときはpd_log_rollback_buff_countの値
E:512
F:512
ステータスサーバ ↑64÷32↑×32
監査証跡管理サーバ ↑A÷1024↑×1024
A:pd_aud_file_nameオペランドの指定がない場合は640
  pd_aud_file_nameオペランドの指定がある場合は640+(304×200)+B+C
B:pd_aud_async_buff_sizeオペランドの値が0の場合は0
  pd_aud_async_buff_sizeオペランドの値が4096以上の場合は次の計算値
   (160×pd_aud_async_buff_countオペランドの値)
   +{(↑pd_aud_async_buff_sizeオペランドの値÷4096↑×4096)
   ×pd_aud_async_buff_countオペランドの値}+4096
C:pd_aud_auto_loadingオペランドにNを指定している場合は0
  pd_aud_auto_loadingオペランドにYを指定している場合は256×2+240

(2) 64ビットモードのHiRDBの場合

HiRDB/シングルサーバの開始から終了までの間にユニットコントローラが使用する共用メモリは,次に示すHiRDBのプロセスの項目すべてを加算した値です。

プロセスの種類 共用メモリの計算式(単位:バイト)
スケジューラ pd_utl_exec_modeの値が0の場合
 {↑(432+304×n)÷1024↑+352+x}×1024
pd_utl_exec_modeの値が1の場合
 {↑(432+304×n)÷1024↑+↑(m×2000+136)÷1024↑+y}×1024
x:シングルサーバの場合:116+5×(m+3)+14
y:シングルサーバの場合:5×(m+3)+14
m:pd_max_usersの値

n:ユニット内のサーバ数+ユニット内ユティリティサーバ数+1
ユニット内ユティリティサーバ数:28+12
ロックサーバ (272+80+c+d+64+8192+g+80+i+64+8192+64+n+16+t+u+16)
 ×pd_lck_pool_partitionの値
c:pd_lck_hash_entryを省略,又は0を指定している場合:
   (↓(8+8×MAX(((p+3)×(pd_max_access_tablesの値+4+5×2)
   +↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓×4)
   ÷10,11261))÷16↓+1)×16
  pd_lck_hash_entryに2以上の素数でない値を指定している場合:
   (↓(8+8×pd_lck_hash_entryの値を超えない最大の素数)÷16↓+1)
   ×16
  pd_lck_hash_entryに1,又は素数を指定している場合:
   (↓(8+8×pd_lck_hash_entryの値)÷16↓+1)×16
d:((p+3)×(pd_max_access_tablesの値+4+5×2)+
  ↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓×4)×128
g:pd_utl_exec_modeの値=1,かつp>32の場合:
   ((p+3)×3+p)×320
  pd_utl_exec_modeの値=0,又はp≦32の場合:
   ((p+3)×3+32)×320
i:pd_utl_exec_modeの値=1,かつp>32の場合:
   ((↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓×5
   +((p+3)×(pd_max_access_tablesの値+4))×2)
   +↓(↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓)÷3↓
   +p×(pd_max_rdarea_noの値+1)+(p+3)×2×2×5)
   を偶数に切り上げた値×112
  pd_utl_exec_modeの値=0,又はp≦32の場合:
   ((↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓×5
   +((p+3)×(pd_max_access_tablesの値+4))×2)
   +↓(↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓)÷3↓
   +32×(pd_max_rdarea_no値+1)+(p+3)×2×2×5)
   を偶数に切り上げた値×112
n:pd_utl_exec_modeの値=1,かつp>32の場合:
   ((p+3)×3+p)×80
  pd_utl_exec_modeの値=0,又はp≦32の場合:
   ((p+3)×3+32)×80
p:pd_max_usersの値
t:pd_utl_exec_modeの値=1,かつp>32の場合:
   32+((p+3)×3+p)×↑pd_max_open_holdable_cursorsの値÷16↑×4
  pd_utl_exec_modeの値=0,又はp≦32の場合:
   32+((p+3)×3+32)×↑pd_max_open_holdable_cursorsの値÷16↑×4
u:pd_utl_exec_modeの値=1,かつp>32の場合:
   32+((↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓×5
   +((p+3)×(pd_max_access_tablesの値+4))×2)
   +↓(↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓)÷3↓
   +p×(pd_max_rdarea_noの値+1)+(p+3)×2×2×5)
   を偶数に切り上げた値×↑pd_max_open_holdable_cursorsの値÷16↑×4
  pd_utl_exec_modeの値=0,又はp≦32の場合:
   32+((↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓×5
   +((p+3)×(pd_max_access_tablesの値+4))×2)
   +↓(↓pd_lck_pool_sizeの値÷pd_lck_pool_partitionの値↓)÷3↓
   +32×(pd_max_rdarea_noの値+1)+(p+3)×2×2×5)
   を偶数に切り上げた値×↑pd_max_open_holdable_cursorsの値÷16↑×4
トランザクションサーバ 304+32+192×m×2+1048
+(416+720+256+392×2+128)×(m×2+7)+256×2
m:pd_max_usersの値
タイマサーバ 32×(pd_max_usersの値+3)×(1+ユニット内ユティリティサーバ数+1)
+1440+(48−32)×2
 
ユニット内ユティリティサーバ数は26+12
統計ログサーバ 424+128×16+32+288×2+1168+144×3
+pd_stj_buff_sizeの値×1024×3+64+4096+8192
プロセスサーバ 176+528×a+96+256+(pd_max_server_processの値+50)×(256+160)+
16+8×16+16+16+64+64×(pd_module_trace_maxの値+1)
 
a:シングルサーバの場合:125
システムマネジャ 672+(48+8)×a×2+(112+8)×(b+30+2)+(104+8)×(c+1)+40×b×14+256+256+40×d+16×e+8+5864+236+f+16+1024+272×h
 
a:シングルサーバの定義数
b:ユニット内のシングルサーバ数
c:ユニット数
d:pdunitオペランドの-cオプションの指定数
e:pdcltgrpオペランド指定数
f:2056+128×(g+3)
g:シングルサーバの場合:92
h:pd_security_host_groupオペランドに指定したホストに対応するIPアドレスの数
  pd_security_host_groupオペランドを指定していない場合は0
ネームサーバ 169984
ノードマネジャ ↑(1312+320×HiRDBシステムの全ユニット数
 +96×HiRDBシステムの全サーバ数+2048+960
 +72×ユニット内HiRDBサーバ数+240×A+44×A+28×A+16×B+48)
÷1024↑×1024

A:pd_utl_exec_mode = 0の場合:1024
pd_utl_exec_mode = 1で,ユニット内にシングルサーバがある場合:pd_max_usersの値×10+400
pd_utl_exec_mode = 1で,ユニット内にシングルサーバがない場合:pd_max_usersの値×7
なお,Aの値が1024を超えない場合は,Aを1024に置き換えて計算してください。

B:pdcltgrpオペランドを指定しない場合:0
pdcltgrpオペランドを指定する場合:pdcltgrpオペランドの指定数+1
I/Oサーバ ↑(56+(↑(56+A)÷32↑×32))÷128↑×128

A:pd_large_file_use=Nを指定した場合
3248+(14+16)×808+1×272+534×272+16×272+pd_max_file_no値×808+(48−32)×3
pd_large_file_use=Y(又は省略)を指定した場合
3248+(14+16)×972+1×276+534×276+16×276+pd_max_file_no値×972+(48−32)×3
ログサーバ 32+48+128×19+432+128×7+1168+512
+↑(128+256+160+8+64)÷pd_log_rec_lengの値↑×pd_log_rec_lengの値
+64+4096×2+(768+512)×B
+144×pd_log_write_buff_countの値
+(pd_log_write_buff_countの値+A)
×↑{pd_log_max_data_sizeの値+(68+44+96+160)}÷4096↑×4096
+C+↑{(B+1)÷12}↑× 8320
 
A:16
B:pdlogadfg -d sysオペランドの指定数
C:512
シンクポイントダンプサーバ ↑(384+1536×2)÷1024↑×1024
+↓{(128+80+240+240)+192×(pdlogadfg -d spdの指定数)
+416×(pdlogadpf -d spdの指定数)+1023}
÷1024↓×1024
ユニット共通 a+b+80+(m+3)×c+64+48+d+e
+(pd_max_server_processの値+100)×(64+16)+32
+(pd_max_server_processの値+100+384)×32+32+f+g+h+i
+(pd_max_server_processの値+127)×48+32
 
a:34768+p×4
b:3480
c:2760
d:48×32
e:80+96×{(m+3)×2
 +MAX(5,↓[m+3]÷10↓)+7}
f:512×(13+3)×2
g:{↓(128+pd_lck_until_disconnect_cntの値×112+4095)÷4096↓}
  ×4096×2
h:↓(pd_registered_portで指定したポート番号の数×16+32+1023)
  ÷1024↓×1024
  pd_registered_portを指定していない場合は0
i:kが2以上の場合は32+(8+8×k)×n
  それ以外の場合は0
k:pd_lck_pool_partitionの値
m:pd_max_usersの値
n:(m+3)×2+MAX{5,↓(m+3)÷10↓}+7
p:pd_dbbuff_modifyにYを指定している場合:16+pd_max_add_dbbuff_shm_noの値+pd_max_resident_rdarea_shm_noの値
 上記以外:16+pd_max_resident_rdarea_shm_noの値
トランザクションログサーバ 1168+688×A
+{
  128×B+144
  +[G+↑(128+256+8+224)÷pd_log_rec_lengの値↑×pd_log_rec_lengの値
  +↑(pd_log_max_data_sizeの値+68+44+96+160)
  ÷pd_log_rec_lengの値↑×pd_log_rec_lengの値]×D
  +E+(48+8)×B×2
 }×ユニット内のサーバ数
+600×B+128×B+64×B×C+144
+{
  G+↑(128+256+8+224)÷pd_log_rec_lengの値↑×pd_log_rec_lengの値
  +↑(pd_log_max_data_sizeの値+68+44+96+160)
  ÷pd_log_rec_lengの値↑×pd_log_rec_lengの値
 }
+E+(48+8)×(B×2+2)
 
A:2
B:7+pd_max_usersの値×2
C:1
D:シングルサーバの場合,pd_log_rollback_buff_countの値が0のときは8,
  それ以外のときはpd_log_rollback_buff_countの値
E:512
G:512
ステータスサーバ ↑64÷32↑×32
監査証跡管理サーバ ↑A÷1024↑×1024
A:pd_aud_file_nameオペランドの指定がない場合は704
  pd_aud_file_nameオペランドの指定がある場合は704+(320×200)+B+C
B:pd_aud_async_buff_sizeオペランドの値が0の場合は0
  pd_aud_async_buff_sizeオペランドの値が4096以上の場合は次の計算値
   (176×pd_aud_async_buff_countオペランドの値)
   +{(↑pd_aud_async_buff_sizeオペランドの値÷4096↑×4096)
   ×pd_aud_async_buff_countオペランドの値}+4096
C:pd_aud_auto_loadingオペランドにNを指定している場合は0
  pd_aud_auto_loadingオペランドにYを指定している場合は256×2+256