付録B.1 TP1/Server Base用の共用メモリの見積もり式

TP1/Server Base用の共用メモリの見積もり式について説明します。ここで説明する見積もり式の単位はバイトです。

<この項の構成>
(1) 静的共用メモリの算出式(アーカイブジャーナルノードでないノードの場合)
(2) 静的共用メモリの算出式(アーカイブジャーナルノードの場合)
(3) 動的共用メモリの算出式
(4) DAMサービス用の共用メモリの算出式
(5) TAMサービス用の共用メモリの算出式
(6) ISTサービス用の共用メモリの算出式
(7) リアルタイム統計情報サービス用の共用メモリの算出式
(8) 共用メモリプールのサイズの算出式

(1) 静的共用メモリの算出式(アーカイブジャーナルノードでないノードの場合)

システム環境定義のstatic_shmpool_sizeオペランドに指定する静的共用メモリの算出式について説明します。ここで説明する算出式に従って静的共用メモリを算出してください。

(a) システムマネジャ
●32ビットの場合

128×(システム環境定義で指定した最大サーバ数+3)
+6024+dcstatsコマンドで統計情報のジャーナル出力を指定するユーザサーバの最大数×1024

●64ビットの場合

128×(システム環境定義で指定した最大サーバ数+3)+8000
+dcstatsコマンドで統計情報のジャーナル出力を指定するユーザサーバの最大数×1280

(b) プロセスサーバ

944×prc_process_countオペランドの指定値+60624

(c) タイマサーバ

32×tim_watch_countオペランドの指定値+1440

(d) スケジューラ

[図データ]

(凡例)
i:スケジュールバッファグループの定義数
j:scdbufgrp定義コマンドを指定しないサービスグループの定義数
k:ユーザサービス定義のservice_holdオペランドにYを指定したサービスグループの定義数
L:ユーザサービス定義のschedule_methodオペランドにnamedpipeを指定したサービスグループの定義数
M:マルチスケジューラグループ数
N:マルチスケジューラデーモン数
o:ユーザサービス定義にscdsvcdef定義コマンドを指定したサービスグループの定義数(キュー受信型サーバのSPPが対象になります)
(e) ロックサーバ
●32ビットの場合

(lck_limit_foruserオペランドの指定値+lck_limit_fordamオペランドの指定値
 +lck_limit_fortamオペランドの指定値+lck_limit_formqaオペランドの指定値)
×544+62016+128

●64ビットの場合

(lck_limit_foruserオペランドの指定値+lck_limit_fordamオペランドの指定値
 +lck_limit_fortamオペランドの指定値+lck_limit_formqaオペランドの指定値)
×544+62432+128

(f) トランザクションマネジャ
●32ビットの場合

2048+1280×(RM名+RM拡張子)数+(816+128×(RM名+RM拡張子)数
+128×trn_max_subordinate_countオペランドの指定値
+↓(63+4×(RM名+RM拡張子)数)/32↓×32)
×trn_tran_process_countオペランドの指定値
+(C×(trn_max_crm_subordinate_countオペランドの指定値+1)
×trn_tran_process_countオペランドの指定値×1216)+128

(凡例)
↓↓:小数点以下を切り捨てます。
C:trn_crm_useオペランドにYを指定した場合は1,Nを指定した場合は0になります。
●64ビットの場合

2048+1280×(RM名+RM拡張子)数+(816+128×(RM名+RM拡張子)数
+128×trn_max_subordinate_countオペランドの指定値
+↓(63+4×(RM名+RM拡張子)数)/32↓×32)
×trn_tran_process_countオペランドの指定値
+(C×(trn_max_crm_subordinate_countオペランドの指定値+1)
×trn_tran_process_countオペランドの指定値×1248)+128

(凡例)
↓↓:小数点以下を切り捨てます。
C:trn_crm_useオペランドにYを指定した場合は1,Nを指定した場合は0になります。
(g) ジャーナルサーバ
●アーカイブジャーナルノードにはアーカイブされないノードの場合

4864+256×jnladdfg定義コマンドの定義数
+480×m×jnladdfg定義コマンドの定義数
+64×m
+128×(m×2+1)
+4096×m×i
+↑(128×(34+2×jnladdfg定義コマンドの定義数×2×m)/8064)↑×8192
+↑(jnl_max_datasizeオペランドの指定値+336)/4096↑×4096×(m×2+1)
+↑(jnl_max_datasizeオペランドの指定値+336)/4096↑×4096×16×m
+↑(388+192×m)/4096↑×4096
+n

(凡例)
↑↑:小数点以下を切り上げます。
i:システムジャーナルサービス定義のjnl_dualオペランドにYを指定した場合は2,Nを指定した場合は1になります。
m:システムジャーナルサービス定義のjnl_max_file_dispersionオペランドの指定値です。
n:システムジャーナルサービス定義のjnl_auto_unloadオペランドにYを指定した場合は128,Nを指定した場合は0になります。
●アーカイブジャーナルノードによってアーカイブされるノードの場合

4864+256×jnladdfg定義コマンドの定義数
+480×m×jnladdfg定義コマンドの定義数
+64×m
+128×(m×2+1)
+4096×m×i
+↑(128×(34+2×jnladdfg定義コマンドの定義数×2×m)/8064)↑×8192
+↑(jnl_max_datasizeオペランドの指定値+336)/4096↑×4096×(m×2+1)
+↑(jnl_max_datasizeオペランドの指定値+336)/4096↑×4096×16×m
+↑(388+192×m)/4096↑×4096
+n
+512
+128×↓(j×1024×1024/(k×1024))↓
+k×1024×↓(j×1024×1024/(k×1024))↓

(凡例)
↑↑:小数点以下を切り上げます。
↓↓:小数点以下を切り捨てます。
i:システムジャーナルサービス定義のjnl_dualオペランドにYを指定した場合は2,Nを指定した場合は1になります。
m:システムジャーナルサービス定義のjnl_max_file_dispersionオペランドの指定値です。
n:システムジャーナルサービス定義のjnl_auto_unloadオペランドにYを指定した場合は128,Nを指定した場合は1になります。
j:jnl_arc_buff_sizeオペランドに指定した値です。
k:jnl_arc_max_datasizeオペランドに指定した値です。
●ジャーナルファイルレス機能を使用するノードの場合

共用メモリの所要量は,10496バイトです。

(h) チェックポイントダンプ
●32ビットの場合

17872+チェックポイントダンプサービス定義の定義数×688
+(チェックポイントダンプサービス定義のjnladdfgオペランドの定義数)×400

●64ビットの場合

18640+チェックポイントダンプサービス定義の定義数×784
+(チェックポイントダンプサービス定義のjnladdfgオペランドの定義数)×400

●ジャーナルファイルレス機能を使用するノードの場合

共用メモリの所要量は,0バイトです。

(i) サーバリカバリジャーナル
●32ビットの場合

1376+6272×n+(↑(a+336)/4096↑+1)×4096×n

(凡例)
↑↑:小数点以下を切り上げます。
n:TP1/Message Queueを使用しない場合は,OpenTP1が提供するRM数+2になります。TP1/Message Queueを使用する場合は,内部RM数+3になります。
a:システムジャーナルサービス定義で指定する最大レコードデータ長になります。
●64ビットの場合

4448+6856×n+(↑(a+336)/4096↑+1)×4096×n

(凡例)
↑↑:小数点以下を切り上げます。
n:TP1/Message Queueを使用しない場合は,OpenTP1が提供するRM数+2になります。TP1/Message Queueを使用する場合は,内部RM数+3になります。
a:システムジャーナルサービス定義で指定する最大レコードデータ長になります。
(j) トランザクションジャーナル
●ジャーナルファイルレス機能を使用しないノードの場合

13472+1200×trn_tran_process_countオペランドの指定値
+64×(trn_tran_process_countオペランドの指定値
       ×trn_max_subordinate_countオペランドの指定値)
+(↑(J+336)/4096↑)×4096
+DAM+TAM+MCF+MQ

(凡例)
↑↑
小数点以下を切り上げます。
J
システムジャーナルサービス定義で指定したjnl_max_datasizeオペランドの指定値になります。
DAM
TP1/FS/Direct Accessを使用しない場合は,0になります。
TP1/FS/Direct Accessを使用する場合は,次の算出式で求めた値になります。

128+128×trn_tran_process_countオペランドの指定値
+(4160+(↑(J+336)/4096↑×4096))
×(trn_recovery_process_countオペランドの指定値)
+56×(trn_tran_process_countオペランドの指定値×2+2)

TAM
TP1/FS/Table Accessを使用しない場合は,0になります。
TP1/FS/Table Accessを使用する場合は,次の算出式で求めた値になります。

4288+240×trn_tran_process_countオペランドの指定値
+(↑(J+336)/4096↑)×4096

MCF
TP1/Message Controlを使用しない場合は,0になります。
TP1/Message Controlを使用する場合は,次の算出式で求めた値になります。

128+240×trn_tran_process_countオペランドの指定値
+(4160+(↑(J+336)/4096↑×4096))
×(trn_recovery_process_countオペランドの指定値)

MQ
TP1/Message Queueを使用しない場合は,0になります。
TP1/Message Queueを使用する場合は,次の算出式で求めた値になります。

4288+240×trn_tran_process_countオペランドの指定値
+(↑(J+336)/4096↑)×4096

●ジャーナルファイルレス機能を使用するノードの場合

共用メモリの所要量は,0バイトです。

(k) ステータスサーバ

共用メモリの所要量は,64バイトです。

(l) ネームサーバ

(name_total_sizeオペランドの指定値+name_cache_sizeオペランドの指定値)
×1024

name_total_size,およびname_cache_sizeの算出式を次に示します。

●ノード自動追加機能を使用しない場合

name_total_size=↑(7616+(all_nodeのノード数×384
               +all_node_exのノード数×284
               +all_node_extend_numberオペランドの指定値×384
               +all_node_ex_extend_numberオペランドの指定値×284)
               +((SPP数※1+rapサーバ数※2+XATMI数※3)×264)
               +MCF※4+DAM※5+TAM※6+CLT※7)/1024↑

name_cache_size=↑(all_nodeオペランドおよびall_node_exオペランド
               に指定したノード※8で起動するSPP数※1の総計×224)/1024↑

(凡例)
↑↑:小数点以下を切り上げます。
注※1
サービスグループの数になります。
注※2
rapサーバを起動する場合は,rapサービス数を指定します。
注※3
XATMI-APIを使用する場合は,XATMIのSPPで定義したサービスの総数になります。
注※4
TP1/Message Controlを使用する場合は,次の算出式で求めた値になります。

(1+MCF通信サーバの数+MHP数)×264

注※5
TP1/FS/Direct Accessを使用する場合は,936になります。
注※6
TP1/FS/Table Accessを使用する場合は,1424になります。
注※7
クライアント拡張サービス機能を使用する場合は,936になります。
注※8
システム共通定義のall_nodeオペランドおよびall_node_exオペランドに指定したノードか,またはドメイン定義ファイルに指定したノードです。
●ノード自動追加機能を使用する場合

name_total_size=↑(7936+(all_node_exのノード数×284)
               +all_node_ex_extend_numberオペランドの指定値×284
               +163840
               +((SPP数※1+rapサーバ数※2+XATMI数※3)×264)
               +MCF※4+DAM※5+TAM※6+CLT※7)/1024↑

name_cache_size=↑(ノードリストに登録されるノード
               およびall_node_exオペランドに指定したノード※8で起動する
               SPP数※1の総計×224)/1024↑

(凡例)
↑↑:小数点以下を切り上げます。
注※1
サービスグループの数になります。
注※2
rapサーバを起動する場合は,rapサービス数を指定します。
注※3
XATMI-APIを使用する場合は,XATMIのSPPで定義したサービスの総数になります。
注※4
TP1/Message Controlを使用する場合は,次の算出式で求めた値になります。

(1+MCF通信サーバの数+MHP数)×264

注※5
TP1/FS/Direct Accessを使用する場合は,936になります。
注※6
TP1/FS/Table Accessを使用する場合は,1424になります。
注※7
クライアント拡張サービス機能を使用する場合は,936になります。
注※8
システム共通定義のall_nodeオペランドおよびall_node_exオペランドに指定したノードか,またはドメイン定義ファイルに指定したノードです。
(m) キューサーバ

ディスクキューを使用する場合,次に示す算出式に従って算出します(メモリキューだけの構成のときは見積もり不要です)。

●32ビットの場合

[図データ]

(凡例)
↑↑:小数点以下を切り上げます。
n:メッセージキューサービス定義のquegrp定義コマンドの定義数
注※1
quegrp定義コマンドで定義したそれぞれの物理ファイルのレコード数の合計値。物理ファイルのレコード数は,queinitコマンドの-nオプションで指定します。
注※2
queinitコマンドの-nオプションに指定したレコード数。
注※3
queinitコマンドの-sオプションに指定したレコード長。
●64ビットの場合

[図データ]

(凡例)
↑↑:小数点以下を切り上げます。
n:メッセージキューサービス定義のquegrp定義コマンドの定義数
注※1
quegrp定義コマンドで定義したそれぞれの物理ファイルのレコード数の合計値。物理ファイルのレコード数は,queinitコマンドの-nオプションで指定します。
注※2
queinitコマンドの-nオプションに指定したレコード数。
注※3
queinitコマンドの-sオプションに指定したレコード長。
(n) 性能トレース取得サービス
●prf_traceオペランドにNを指定した場合

共用メモリの所要量は,1024バイトです。

●prf_traceオペランドにYを指定した場合

共用メモリの所要量は,1551360バイトです。

(o) rapリスナーおよびrapサーバ

1024+148×A+↑(A/8)↑+260×B

(凡例)
↑↑:小数点以下を切り上げます。
A:rap_parallel_serverオペランドの指定値になります。
B:rap_max_clientオペランドの指定値になります。
(p) XAリソースサービス

672+A×trn_tran_process_countオペランドの指定値

(凡例)
A:xar_msdtc_useオペランドにNを指定するか,または指定を省略した場合は,288です。xar_msdtc_useオペランドにYを指定した場合は,xarfile定義コマンドで指定したXARファイルのレコード長です。
(q) DAM
●32ビットの場合

288×(damfile定義コマンドの定義数+dam_added_fileオペランドの指定値)
+256+512

●64ビットの場合

288×(damfile定義コマンドの定義数+dam_added_fileオペランドの指定値)
+288+512

(r) IST

2336+(48×ISTサービス定義に定義したテーブル数)+512

(s) メッセージキュー(Windows版)

16+(72+12×n1)×n2

(凡例)
n1:すべてのユーザサービス定義の中で次の算出式が最大となる値です。

↑message_store_buflenオペランドの指定値/message_cell_sizeオペランドの指定値↑

rapリスナーサービス定義の場合は,rap_parallel_serverオペランドの指定値が3以下のとき,8になります。
rap_parallel_serverオペランドの指定値が4以上のときは次の算出式になります。

↑rap_parallel_serverオペランドの指定値×2.1↑

n2:スケジュールサービス定義のscd_server_countオペランドの指定値+5になります。
↑↑:小数点以下を切り上げます。
(t) リアルタイム統計情報サービス

共用メモリの所要量は,64バイトです。

(u) クライアント拡張サービス

M×N

(凡例)
M:クライアントサービス定義のmessage_store_buflenオペランドの指定値
N:トランザクションRPC実行プロセス,およびCUP実行プロセスをあわせて使用する場合は2です。トランザクションRPC実行プロセス,またはCUP実行プロセスのどちらかを使用する場合は1です。
(v) XATMI通信サービス

共用メモリの所要量は,32バイトです。

(2) 静的共用メモリの算出式(アーカイブジャーナルノードの場合)

システム環境定義のstatic_shmpool_sizeオペランドに指定する静的共用メモリの算出式について説明します。ここで説明する算出式に従って静的共用メモリを算出してください。

(a) システムマネジャ

128×(システム環境定義で指定した最大サーバ数+3)+5487
+dcstatsコマンドで統計情報のジャーナル出力を指定するユーザサーバの最大数×1024

(b) プロセスサーバ

共用メモリの所要量は,251648バイトです。

(c) タイマサーバ

32×tim_watch_countオペランドの指定値+1440

(d) ジャーナルサーバ

[図データ]

(凡例)
↑↑:小数点以下を切り上げます。
r:グローバルアーカイブジャーナルサービス定義のjnldfsv -aで指定したリソースグループ数になります。
d:リソースグループiの二重化係数になります。
・jnl_dualオペランドがNの場合:1
・jnl_dualオペランドがYの場合:2
m:リソースiで指定したjnl_max_file_dispersionオペランドの指定値になります。
(e) ネームサーバ
●ノード自動追加機能を使用しない場合

(name_total_sizeオペランドの指定値+name_cache_sizeオペランドの指定値)×1024

name_total_size,およびname_cache_sizeの算出式を次に示します。

name_total_size=↑(7616+all_nodeオペランドのノード数×384
               +all_node_exオペランドのノード数×284
               +all_node_extend_numberオペランドの指定値×384
               +all_node_ex_extend_numberオペランドの指定値×284)
                /1024↑
name_cache_size=↑(該当アーカイブジャーナルノードに接続する被アーカイブ
                ジャーナルノード数×224)/1024↑

●ノード自動追加機能を使用する場合

(name_total_sizeオペランドの指定値+name_cache_sizeオペランドの指定値)×1024

name_total_size,およびname_cache_sizeの算出式を次に示します。

name_total_size=↑(7936+all_node_exオペランドのノード数×284
               +all_node_ex_extend_numberオペランドの指定値×284
               +163840)/1024↑
name_cache_size=↑(該当アーカイブジャーナルノードに接続する被アーカイブ
                ジャーナルノード数×224)/1024↑

(凡例)
↑↑:小数点以下を切り上げます。
(f) 性能トレース取得サービス
●prf_traceオペランドにNを指定した場合

共用メモリの所要量は,99328バイトです。

●prf_traceオペランドにYを指定した場合

共用メモリの所要量は,1551360バイトです。

(3) 動的共用メモリの算出式

システム環境定義のdynamic_shmpool_sizeオペランドに指定する動的共用メモリの算出式について説明します。ここで説明する算出式に従って動的共用メモリを算出してください。

なお,ここで説明する算出式は,アーカイブジャーナルノードでないノードの場合です。アーカイブジャーナルノードの場合は動的共用メモリの値に0を指定してください。

(a) トランザクションジャーナル
●ジャーナルファイルレス機能を使用しないノードの場合

(((1+(↑(システムジャーナルサービス定義で指定したjnl_max_datasizeオペランドの指定値+512)/4096↑))×4096)+32)×trn_tran_process_countオペランドの指定値

(凡例)
↑↑:小数点以下を切り上げます。
●ジャーナルファイルレス機能を使用するノードの場合

共用メモリの所要量は,0バイトです。

(b) キューサーバ

ディスクキューを使用する場合,次に示す算出式に従って算出します(メモリキューだけの構成のときは見積もり不要です)。

↑(複数のトランザクションで同期点処理までに,同時に要求するメッセージ数×48+32)/8192↑×(8192+512)

(凡例)
↑↑:小数点以下を切り上げます。
(c) DAM
●32ビットの場合
トランザクションアクセス種別がブランチアクセスの場合

(484×↑1トランザクションブランチでオープンしているファイル数/10↑+72×dam_update_blockオペランドの指定値+304)
×同時実行トランザクションブランチ数

トランザクションアクセス種別がグローバルアクセスの場合

(484×↑1トランザクションブランチでオープンしているファイル数/10↑+72×dam_update_blockオペランドの指定値+304)
×同時実行トランザクションブランチ数
+(128+52×↑1グローバルトランザクションで発生するトランザクションブランチ数/10↑)
×同時実行グローバルトランザクション数

(凡例)
↑↑:小数点以下を切り上げます。
●64ビットの場合
トランザクションアクセス種別がブランチアクセスの場合

(488×↑1トランザクションブランチでオープンしているファイル数/10↑+72×dam_update_blockオペランドの指定値+304)
×同時実行トランザクションブランチ数

トランザクションアクセス種別がグローバルアクセスの場合

(488×↑1トランザクションブランチでオープンしているファイル数/10↑+72×dam_update_blockオペランドの指定値+304)
×同時実行トランザクションブランチ数
+(128+52×↑1グローバルトランザクションで発生するトランザクションブランチ数/10↑)
×同時実行グローバルトランザクション数

(凡例)
↑↑:小数点以下を切り上げます。
(d) TAM

128+32×tam_max_tblnumオペランドの指定値

(4) DAMサービス用の共用メモリの算出式

DAMブロックを退避するためのバッファ領域用の共用メモリの算出式について説明します。次に示すD1またはD2のうち,どちらか大きい値に1024を加えた値が算出結果になります。

D1=DAMサービス定義のdam_cache_sizeオペランドで指定したバッファ領域長
D2=A+B

(凡例)
A:(Mb/64+1)×128×n×Tr
B:{↓(A/576)↓}×32+64
↓↓:小数点以下を切り捨てます。
Mb:DAMサービス定義で定義した論理ファイルの中で最大ブロック長を持つファイルのブロック長+8(セクタ長の倍数)
n:DAMサービス定義のdam_update_blockオペランドで指定した最大更新ブロック数
Tr:DAMサービス定義のdam_tran_process_countオペランドで定義したトランザクションブランチ数

DAMサービス用の共用メモリとして確保されるバッファ領域長をDAMサービス定義のdam_cache_sizeオペランドまたはdam_cache_size_fixオペランドに指定した場合,自動的にバイトに換算されます。そのときに,1キロバイト当たり1000バイトで換算するか,1024バイトで換算するかをdam_kb_sizeオペランドで指定できます。詳細については,DAMサービス定義のdam_kb_sizeオペランドを参照してください。

(5) TAMサービス用の共用メモリの算出式

TAMテーブル用の共用メモリは次に示す算出式に従って算出してください。

[図データ]

(凡例)
n:TAMサービス定義に指定するtamtable定義コマンドの数
Fa:TAMサービス定義で定義したトランザクション内最大アクセステーブル数
Fb:TAMサービス定義で定義した同時走行最大トランザクションブランチ数
Fc:TAMサービス定義で定義したオンライン中に使用するTAMファイルの最大数
Fd:↑(320+256×Fb)/Fe↑×2+Fb×2
Fe:(72+128×Fa)を32の整数倍に切り上げた値
Fg:(210+Fd×4)を16の整数倍に切り上げた値
Fm:TAMサービス定義で定義したオンライン中に使用するTAMファイルの最大容量を16の整数倍に切り上げた値
Fs:TAMサービス定義に指定するtamtable定義コマンドのTAMファイルのファイル容量(TAMファイルの容量は,TAMファイル容量の見積もり方法によって算出)

(6) ISTサービス用の共用メモリの算出式

ISTテーブル用の共用メモリは次に示す算出式に従って算出してください。

[図データ]

(7) リアルタイム統計情報サービス用の共用メモリの算出式

リアルタイム統計情報サービス用の共用メモリは次に示す算出式に従って算出してください。

304+(↑(4×rts_service_maxオペランドの指定値)/8↑×8)
+(104×(rts_service_maxオペランドの指定値+1))
+(144×rts_item_maxオペランドの指定値×(rts_service_maxオペランドの指定値+1))

(8) 共用メモリプールのサイズの算出式

共用メモリプールのサイズは次に示す算出式に従って算出してください。

OpenTP1制御用共用メモリ(約10240キロバイト)
+システム環境定義のstatic_shmpool_sizeオペランドの指定値
+システム環境定義のdynamic_shmpool_sizeオペランドの指定値