Hitachi

ノンストップデータベース HiRDB Version 10 システム導入・設計ガイド(UNIX(R)用)


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

〈この項の構成〉

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

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

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

プロセスの種類

共用メモリの計算式(単位:バイト)

スケジューラ

pd_utl_exec_modeの値が0の場合

 {↑(432+304×n)÷1024↑+500+x+↑(134+pd_trn_rcvmsg_store_buflenの値)÷1024↑}×1024

pd_utl_exec_modeの値が1の場合

 {↑(432+304×n)÷1024↑+↑(m×2000+136)÷1024↑+y+↑(134+pd_trn_rcvmsg_store_buflenの値)÷1024↑}×1024

x:シングルサーバの場合:116+5×(m+3)+14

ユティリティ専用ユニットの場合:0

y:シングルサーバの場合:5×(m+3)+14

ユティリティ専用ユニットの場合:0

m:pd_max_usersの値+pd_max_reflect_process_countの値

n:ユニット内のサーバ数+ユニット内ユティリティサーバ数+1

ユニット内ユティリティサーバ数:27+α

α:ユニット内にシングルサーバがある場合は12,それ以外は0

ロックサーバ

ユティリティ専用ユニットでない場合

(320+48+c+d+48+4096+g+48+i+48+4096+48+n+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の値+pd_max_reflect_process_countの値

t:pd_utl_exec_modeの値=1,かつp>32の場合:

   48+((p+3)×3+p)×↑pd_max_open_holdable_cursorsの値÷16↑×4

  pd_utl_exec_modeの値=0,又はp≦32の場合:

   48+((p+3)×3+32)×↑pd_max_open_holdable_cursorsの値÷16↑×4

u:pd_utl_exec_modeの値=1,かつp>32の場合:

   48+((↓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の場合:

   48+((↓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

ユティリティ専用ユニットの場合

8416

トランザクションサーバ

288+32+192×m×2+1028

+(420+624+256+384×2+128)×(m×2+7)+256×2

m:pd_max_usersの値+pd_max_reflect_process_countの値

タイマサーバ

32×(pd_max_usersの値+pd_max_reflect_process_countの値+3)×(1+ユニット内ユティリティサーバ数+1)+1440

ユニット内ユティリティサーバ数:26+α

α:HP-UX版及びAIX版で,ユニット内にシングルサーバがある場合は12,Linux版で,ユニット内にシングルサーバがある場合は3

統計ログサーバ

384+128×16+32+288×2+1024+128×3+pd_stj_buff_sizeの値×1024×3+64+4096+8192

プロセスサーバ

192+512×a+96+256+(pd_max_server_processの値+50)×(256+144)+16+8×16+16+16+48+48×(b+1)

a:シングルサーバの場合:131

  ユティリティ専用ユニットの場合:106

b:システム共通定義,又はユニット制御情報定義にpd_module_trace_maxオペランドを指定している場合:pd_module_trace_maxの値

 それ以外:16383

シングルサーバ

992+(44+4)×a×2+(100+4)×(b+30+2)+(100+4)×(c+1)+40×b×14+256+256+36×d+12×e+8+13080+272+5856×b+f+16+1024+272×h

a:シングルサーバの定義数

b:ユニット内のシングルサーバ数

c:ユニット数

d:pdunitオペランドの-cオプションの指定数

e:pdcltgrpオペランド指定数

f:2052+128×(g+3)

g:シングルサーバの場合:92 ユティリティ専用ユニットの場合:74

h:pd_security_host_groupオペランドに指定したホストに対応するIPアドレスの数

  pd_security_host_groupオペランドを指定していない場合は0

ネームサーバ

169984

ノードマネジャ

↑(1152+432×全ユニット数+80×全サーバ数+7680+1008

 +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:196940

+pd_max_file_no値×1024

+pd_max_utl_ios_file_no値×296

ユティリティ専用ユニットの場合は34268+pd_max_utl_ios_file_no値×296バイトになります。

ログサーバ

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

pd_max_reflect_process_countオペランドを指定する場合に加算します。

128+704

A:16

B:pdlogadfg -d sysオペランドの指定数

C:0

シンクポイントダンプサーバ

↑(368+1456×2)÷1024↑×1024

+↑{(96+80+208+208)+192×(pdlogadfg -d spdの指定数)

+416×(pdlogadpf -d spdの指定数)}

÷1024↑×1024

ユニット共通

a+b+64+(m+3)×c+64+48+d+e

+(pd_max_server_processの値×2+100)×(48+16)+32

+(pd_max_server_processの値×2+100+384)×32+32+f+g+h+i+p+q

+(pd_max_server_processの値+127+r)×32+32+t

a:24896

b:2988

c:2716

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)÷4096↑}

  ×4096×2

h:↑(pd_registered_portで指定したポート番号の数×16+32)

  ÷1024↑×1024

  pd_registered_portを指定していない場合は0

i:kが2以上の場合は32+(8+8×k)×n

  それ以外の場合は0

k:pd_lck_pool_partitionの値

m:pd_max_usersの値+pd_max_reflect_process_countの値

n:(m+3)×2+MAX{5,↓(m+3)÷10↓}+7

p:pd_dbbuff_modifyにYを指定している場合:2064+pd_max_add_dbbuff_shm_noの値×4

 上記以外:2064

q:144

r:pd_utl_exec_modeの値=1,かつm>32の場合:(m+3)×3+m

  pd_utl_exec_modeの値=0,又はm≦32の場合:(m+3)×3+32

t:352

トランザクションログサーバ

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の値+pd_max_reflect_process_countの値)×2

C:1

D:シングルサーバの場合,pd_log_rollback_buff_countの値が0のときは8,

  それ以外のときはpd_log_rollback_buff_countの値

  ユティリティ専用ユニットの場合は0

E:0

F:60

ステータスサーバ

↑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以上の場合は次の計算値

  Linuxの場合

   (160×pd_aud_async_buff_countオペランドの値)

   +{(↑pd_aud_async_buff_sizeオペランドの値÷4096↑×4096)

   ×pd_aud_async_buff_countオペランドの値}+4096

  Linux以外の場合

   (160×pd_aud_async_buff_countオペランドの値)

   +{(↑pd_aud_async_buff_sizeオペランドの値÷4096↑×4096)

   ×pd_aud_async_buff_countオペランドの値}

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↑+500+x+↑(134+pd_trn_rcvmsg_store_buflenの値)÷1024↑}×1024

pd_utl_exec_modeの値が1の場合

 {↑(432+304×n)÷1024↑+↑(m×2000+136)÷1024↑+y+↑(134+pd_trn_rcvmsg_store_buflenの値)÷1024↑}×1024

x:シングルサーバの場合:116+5×(m+3)+14

ユティリティ専用ユニットの場合:0

y:シングルサーバの場合:5×(m+3)+14

ユティリティ専用ユニットの場合:0

m:pd_max_usersの値+pd_max_reflect_process_countの値

n:ユニット内のサーバ数+ユニット内ユティリティサーバ数+1

ユニット内ユティリティサーバ数:27+α

α:ユニット内にシングルサーバがある場合は12,それ以外は0

ロックサーバ

ユティリティ専用ユニットでない場合

(496+80+c+d+64+8192+g+80+i+64+8192+64+n+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の値+pd_max_reflect_process_countの値

t:pd_utl_exec_modeの値=1,かつp>32の場合:

   48+((p+3)×3+p)×↑pd_max_open_holdable_cursorsの値÷16↑×4

  pd_utl_exec_modeの値=0,又はp≦32の場合:

   48+((p+3)×3+32)×↑pd_max_open_holdable_cursorsの値÷16↑×4

u:pd_utl_exec_modeの値=1,かつp>32の場合:

   48+((↓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の場合:

   48+((↓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

ユティリティ専用ユニットの場合

16704

トランザクションサーバ

304+32+192×m×2+1048

+(416+800+256+392×2+128)×(m×2+7)+256×2

m:pd_max_usersの値+pd_max_reflect_process_countの値

タイマサーバ

32×(pd_max_usersの値+pd_max_reflect_process_countの値+3)×(1+ユニット内ユティリティサーバ数+1)

+1440+(48−32)×2

ユニット内ユティリティサーバ数は26+α

α:HP-UX版及びAIX版で,ユニット内にシングルサーバがある場合は12,Linux版で,ユニット内にシングルサーバがある場合は3

統計ログサーバ

424+128×16+32+288×2+1168+144×3

+pd_stj_buff_sizeの値×1024×3+64+4096+8192

プロセスサーバ

208+528×a+96+256+(pd_max_server_processの値+50)×(256+160)+16+8×16+16+16+64+64×(b+1)

a:シングルサーバの場合:131

  ユティリティ専用ユニットの場合:106

b:システム共通定義,又はユニット制御情報定義にpd_module_trace_maxオペランドを指定している場合:pd_module_trace_maxの値

 それ以外:16383

シングルサーバ

1024+(48+8)×a×2+(112+8)×(b+30+2)+(104+8)×(c+1)+40×b×14+256+256+40×d+16×e+8+13096+320+5856×b+f+16+1024+272×h

a:シングルサーバの定義数

b:ユニット内のシングルサーバ数

c:ユニット数

d:pdunitオペランドの-cオプションの指定数

e:pdcltgrpオペランド指定数

f:2056+128×(g+3)

g:シングルサーバの場合:92 ユティリティ専用ユニットの場合:74

h:pd_security_host_groupオペランドに指定したホストに対応するIPアドレスの数

  pd_security_host_groupオペランドを指定していない場合は0

ネームサーバ

169984

ノードマネジャ

↑(1312+464×HiRDBシステムの全ユニット数

 +96×HiRDBシステムの全サーバ数+10240+1200

 +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の値+pd_max_reflect_process_countの値)×10+400

pd_utl_exec_mode = 1で,ユニット内にシングルサーバがない場合:(pd_max_usersの値+pd_max_reflect_process_countの値)×7

なお,Aの値が1024を超えない場合は,Aを1024に置き換えて計算してください。

B:pdcltgrpオペランドを指定しない場合:0

pdcltgrpオペランドを指定する場合:pdcltgrpオペランドの指定数+1

I/Oサーバ

↑(56+(↑(56+A)÷32↑×32))÷128↑×128

A:196988

+pd_max_file_no値×1024

+pd_max_utl_ios_file_no値×296

ユティリティ専用ユニットの場合は34316+pd_max_utl_ios_file_no値×296バイトになります。

ログサーバ

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

pd_max_reflect_process_countオペランドを指定する場合に加算します。

128+704

A:16

B:pdlogadfg -d sysオペランドの指定数

C:0

シンクポイントダンプサーバ

↑(384+1536×2)÷1024↑×1024

+↑{(128+80+240+240)+192×(pdlogadfg -d spdの指定数)

+416×(pdlogadpf -d spdの指定数)}

÷1024↑×1024

ユニット共通

a+b+80+(m+3)×c+64+48+d+e

+(pd_max_server_processの値×2+100)×(64+16)+32

+(pd_max_server_processの値×2+100+384)×32+32+f+g+h+i+p+q

+(pd_max_server_processの値+127+r)×48+32+t

a:34304

b:3480

c:3640

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)÷4096↑}

  ×4096×2

h:↑(pd_registered_portで指定したポート番号の数×16+32)

  ÷1024↑×1024

  pd_registered_portを指定していない場合は0

i:kが2以上の場合は32+(8+8×k)×n

  それ以外の場合は0

k:pd_lck_pool_partitionの値

m:pd_max_usersの値+pd_max_reflect_process_countの値

n:(m+3)×2+MAX{5,↓(m+3)÷10↓}+7

p:pd_dbbuff_modifyにYを指定している場合:2064+(pd_max_add_dbbuff_shm_noの値+pd_max_resident_rdarea_shm_noの値)×4

 上記以外:2064+pd_max_resident_rdarea_shm_noの値×4

q:HP-UX (IPF)64ビットモードの場合:256

 上記以外:144

r:pd_utl_exec_modeの値=1,かつm>32の場合:(m+3)×3+m

  pd_utl_exec_modeの値=0,又はm≦32の場合:(m+3)×3+32

t:352

トランザクションログサーバ

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の値+pd_max_reflect_process_countの値)×2

C:1

D:シングルサーバの場合,pd_log_rollback_buff_countの値が0のときは8,

  それ以外のときはpd_log_rollback_buff_countの値

  ユティリティ専用ユニットの場合は0

E:Linux版の場合:4096

  Linux版以外の場合:0

G:64

ステータスサーバ

↑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以上の場合は次の計算値

  Linux版の場合:

   (176×pd_aud_async_buff_countオペランドの値)

   +{(↑pd_aud_async_buff_sizeオペランドの値÷4096↑×4096)

   ×pd_aud_async_buff_countオペランドの値}+4096

  Linux版以外の場合:

   (176×pd_aud_async_buff_countオペランドの値)

   +{(↑pd_aud_async_buff_sizeオペランドの値÷4096↑×4096)

   ×pd_aud_async_buff_countオペランドの値}

C:pd_aud_auto_loadingオペランドにNを指定している場合は0

  pd_aud_auto_loadingオペランドにYを指定している場合は256×2+256