Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引


メモリ関連定義

〈このページの構成〉

形式

set形式

〔set pce_no=サービス処理キュー数〕
〔set system_user_area=プロセス管理テーブルユーザエリアサイズ〕
〔set system_user_area_mb=プロセス管理テーブルユーザエリアサイズ〕
〔set thread_user_area=スレッド対応インタフェースユーザエリアサイズ〕
〔set thread_user_area_mb=スレッド対応インタフェースユーザエリアサイズ〕
〔set system_work_size=システムワーク領域最大サイズ〕
〔set user_work_size=ユーザワーク領域最大サイズ〕
〔set max_mem_size=TP1/EEプロセスで確保するメモリの最大サイズ〕
〔set max_mem_size_mb=TP1/EEプロセスで確保するメモリの最大サイズ〕
〔set memory_alert_rate=セグメント使用率規定値超過メッセージ出力時の使用割合〕
〔set memory_leak_message=Y|N|F〕
〔set memory_leak_message_ignore_attr=TASK | FREE〕
〔set time_message_size=タイマトランザクション登録時に使用する最大データサイズ〕
〔set time_message_no=タイマトランザクション登録時に使用する最大データ数〕
〔set icb_no=タイマトランザクション登録最大数〕
〔set max_message_size=メッセージ引き渡しエリアの最大サイズ〕
〔set max_outmessage_size=メッセージ応答エリアの最大サイズ〕
〔set recv_message_buf_size=受信バッファサイズ〕
〔set recv_message_buf_cnt=受信バッファ面数〕
〔set send_message_buf_size=送信バッファサイズ〕
〔set send_message_buf_cnt=送信バッファ面数〕
〔set dbq_recv_message_buf_cnt=DBキュー機能で使用する受信バッファ面数〕
〔set dbq_send_message_buf_cnt=DBキュー機能で使用する送信バッファ面数〕
〔set dbq_max_message_size=DBキュー機能で使用する最大メッセージサイズ〕
〔set dbq_use_buf_cnt=DBキュー機能で使用する最大バッファ面数〕
〔set memory_cobol_area_size=初期化確保時のプールサイズ,追加確保時のプールサイズ〕
〔set memory_cobol_area_thd_size=初期化確保時のプールサイズ,追加確保時のプールサイズ〕

コマンド形式

なし。

機能

TP1/EEプロセスで使用するメモリの情報を定義します。

説明

各オペランドについて説明します。

set形式のオペランド

pce_no=サービス処理キュー数  〜〈符号なし整数〉((100〜500000))《2000》

プロセス内に滞留させることができるサービス処理キュー数を指定します。サービス処理キュー数には,TP1/EEが使用するシステム処理キュー数も含まれます。

サービス処理キュー数が不足すると,システムの動作速度やRPCサービス要求の受信数に影響するため,pce_noオペランドには余裕を持った値を指定してください。

pce_noオペランドに指定するサービス処理キュー数は,次に示す計算式で算出します。

処理キュー数=(100※1+受信バッファ面数※2
              +システム内で同時に登録するタイマトランザクション数
              +DBキュー同時起動数※3
              +DBキュー送信バッファ面数※4)×1.5※5
注※1

100とは,システム処理キュー数です。

注※2

受信バッファ面数とは,メモリ関連定義のrecv_message_buf_cntオペランドの指定値とdbq_recv_message_buf_cntオペランドの指定値の合計です。

注※3

DBキュー同時起動数とは,全DBキューの,DBキュー機能関連定義のdbqsrvdef定義コマンドの-tオプションの指定値の合計です。

注※4

DBキュー送信バッファ面数とは,メモリ関連定義のdbq_send_message_buf_cntオペランドの指定値です。

注※5

1.5とは,安全率です。

system_user_area=プロセス管理テーブルユーザエリアサイズ  〜〈符号なし整数〉((0〜16777216))《0》(単位:バイト)

TP1/EEプロセスで使用するメモリ領域のうち,ユーザ(UAP)がプロセス対応として使用する領域のサイズを指定します。

このオペランドを指定した場合は,指定されたサイズの領域を1プロセスに対して1面確保します。指定を省略,または0を指定した場合は,該当する領域を確保しません。

このオペランドで確保した領域は初期化されます。

system_user_area_mb=プロセス管理テーブルユーザエリアサイズ  〜〈符号なし整数〉((0〜16384))《0》(単位:メガバイト)

TP1/EEプロセスで使用するメモリ領域のうち,ユーザ(UAP)がプロセス対応として使用する領域のサイズを,メガバイト単位で指定します。

このオペランドを指定した場合は,指定されたサイズの領域を1プロセスに対して1面確保します。指定を省略,または0を指定した場合は,該当する領域を確保しません。

性能低下を防止するため,このオペランドで確保した領域は,各面の先頭から16メガバイトだけ初期化されます。

このオペランドを指定した場合,system_user_areaオペランドは指定できません。

このオペランドを指定する場合,マニュアル中のsystem_user_areaオペランドに関する記載は,このオペランドおよびその設定値(バイト換算)として読み替えてください。

thread_user_area=スレッド対応インタフェースユーザエリアサイズ  〜〈符号なし整数〉((0〜16777216))《0》(単位:バイト)

TP1/EEプロセスで使用するメモリ領域のうち,ユーザ(UAP)がスレッド対応として使用する領域のサイズを指定します。

このオペランドを指定した場合は,指定されたサイズの領域を処理スレッド(通常処理スレッド+予備処理スレッド+タイマ処理スレッド+1)ごとに1面確保します。指定を省略,または0を指定した場合は,該当する領域を確保しません。

このオペランドで確保した領域は初期化されます。

thread_user_area_mb=スレッド対応インタフェースユーザエリアサイズ  〜〈符号なし整数〉((0〜16384))《0》(単位:メガバイト)

TP1/EEプロセスで使用するメモリ領域のうち,ユーザ(UAP)がスレッド対応として使用する領域のサイズを,メガバイト単位で指定します。

このオペランドを指定した場合は,指定されたサイズの領域を処理スレッド(通常処理スレッド+予備処理スレッド+タイマ処理スレッド+1)ごとに1面確保します。指定を省略,または0を指定した場合は,該当する領域を確保しません。

性能低下を防止するため,このオペランドで確保した領域は,各面の先頭から16メガバイトだけ初期化されます。

このオペランドを指定した場合,thread_user_areaオペランドは指定できません。

このオペランドを指定する場合,マニュアル中のthread_user_areaオペランドに関する記載は,このオペランドおよびその設定値(バイト換算)として読み替えてください。

system_work_size=システムワーク領域最大サイズ  〜〈符号なし整数〉((100〜1048576))《450》(単位:キロバイト)

TP1/EEプロセスで使用するメモリ領域のうち,システムがワークイメージで使用するセグメント(ワークセグメント)のプール領域のサイズを指定します。

system_work_sizeオペランドを指定した場合は,指定されたサイズのプール領域をプロセスに1面確保します。

system_work_sizeオペランド指定サイズが不足した場合は,共用ワーク領域を使用します。共用ワーク領域のサイズについてはmax_mem_sizeオペランドを参照してください。

user_work_size=ユーザワーク領域最大サイズ  〜〈符号なし整数〉((0〜1048576))《100》(単位:キロバイト)

TP1/EEプロセスで使用するメモリ領域のうち,ユーザ(UAP)がワークイメージで使用するセグメント(ワークセグメント)のプール領域のサイズを指定します。

user_work_sizeオペランドを指定した場合は,指定されたサイズのプール領域をプロセスに1面確保します。0を指定した場合は,該当する領域を確保しません。

user_work_sizeオペランドに1以上を指定し,かつ指定サイズが不足した場合は,共用ワーク領域を使用します。共用ワーク領域のサイズについてはmax_mem_sizeオペランドを参照してください。

max_mem_size=TP1/EEプロセスで確保するメモリの最大サイズ  〜〈符号なし整数〉((1〜2000000000))(単位:バイト)

トランザクション処理でTP1/EEプロセス(TP1/EEおよびユーザ(UAP))が使用するメモリのサイズの合計をバイト単位で指定します。

max_mem_sizeオペランドで指定したメモリサイズは,そのままOSに要求されます(バウンダリ調整しないでmallocします)。各サイズの固定長(PCE,ICBなど)および可変長(IBF,OBF,ユーザワークエリアなど)は,max_mem_sizeオペランドで確保したエリアから1エントリ単位で4バイトのバウンダリ調整をしてから指定数分を割り当てます。

固定長の場合,1エントリは管理エリア+各エリアサイズです。可変長の場合,1エントリは管理エリア+エリア指定サイズでバウンダリ調整をします。

このオペランドに指定したサイズのうち,システムに必要なサイズを確保した余りの領域を共用ワーク領域として使用します。共用ワーク領域は,システムワーク領域(system_work_size指定値)およびユーザワーク領域(user_work_size指定値。ただし,user_work_sizeに0を指定した場合は対象外)が不足した場合の予備領域です。共用ワーク領域のサイズは,eememlsコマンドで確認できます。

このオペランド,またはmax_mem_size_mbオペランドのどちらか一方を必ず指定してください。

max_mem_size_mb=TP1/EEプロセスで確保するメモリの最大サイズ  〜〈符号なし整数〉((1〜4194304))(単位:メガバイト)

トランザクション処理でTP1/EEプロセス(TP1/EEおよびユーザ(UAP))が使用するメモリのサイズの合計をメガバイト単位で指定します。

このオペランド,またはmax_mem_sizeオペランドのどちらか一方を必ず指定してください。

このオペランドを指定する場合,マニュアル中のmax_mem_sizeオペランドに関する記載は,このオペランドおよびその設定値(バイト換算)として読み替えてください。

memory_alert_rate=セグメント使用率規定値超過メッセージ出力時の使用割合  〜〈符号なし整数〉((0〜100))《80》(単位:%)

システムバッファセグメントの使用率をTP1/EEプロセスの正常終了または計画停止時に通知する場合の割合を指定します。

memory_alert_rateオペランドを指定した場合は,オンライン中にセグメントの使用率が指定値を超過したすべてのセグメントに対して,TP1/EEプロセスの正常終了または計画停止時に使用率超過を警告するメッセージログを出力します。0を指定した場合は,メッセージログを出力しません。

memory_leak_message=Y|N|F  〜《Y》

ユーザ(UAP)が使用するワークセグメントの解放漏れがあった場合,TP1/EEプロセスの正常終了または計画停止時に,UAP確保メモリの解放漏れ警告メッセージを出力するかどうかを指定します。

Y

ワークセグメントの解放漏れがあった場合に,TP1/EEプロセスの正常終了または計画停止時に警告メッセージを出力します。

N

ワークセグメントの解放漏れがあった場合でも,TP1/EEプロセスの正常終了または計画停止時に警告メッセージを出力しません。

F

ワークセグメントの解放漏れがあった場合に,TP1/EEプロセスの正常終了または計画停止時に警告メッセージを出力します。また,解放漏れがあったワークセグメントがFREE属性の場合は,そのワークセグメントの詳細情報を示すメッセージも出力します。

memory_leak_message_ignore_attr=TASK|FREE  〜《なし》

memory_leak_messageがYまたはFの場合に,ワークセグメント解放漏れメッセージの出力を抑止するセグメント属性を指定します。TASK属性およびFREE属性の両方の解放漏れメッセージの出力抑止を行う場合は,memory_leak_messageにNを指定してください。

抑止対象のメッセージはKFSB55107-E,KFSB55108-E,KFSB55109-Eです。

TASK

TASK属性のワークセグメント解放漏れメッセージの出力を抑止します。

FREE

FREE属性のワークセグメント解放漏れメッセージの出力を抑止します。

定義とメッセージ出力を行うセグメント属性の関係を次の表に示します。

表8‒3 定義と出力セグメント属性の関係

定義

memory_leak_message

Y

F

N

TASK

FREE

TASK

FREE

TASK

FREE

memory_leak_message_ignore_attr

TASK

×

×

×

×

FREE

×

×

×

×

省略

×

×

(凡例)

◎:メッセージを出力します(KFSB55107,KFSB55108,KFSB55109を出力)。

○:メッセージを出力します(KFSB55107を出力)。

×:メッセージを出力しません。

time_message_size=タイマトランザクション登録時に使用する最大データサイズ  〜〈符号なし整数〉((0〜16777216))(単位:バイト)

タイマトランザクションに使用するユーザデータの最大サイズを指定します。

time_message_sizeオペランドを省略した場合,max_message_sizeオペランドで指定した値を設定します。

time_message_no=タイマトランザクション登録時に使用する最大データ数  〜〈符号なし整数〉((0〜65535))

同時に登録するタイマトランザクションのうち,ユーザデータを持つタイマトランザクションの登録件数を指定します。

time_message_noオペランドを省略した場合,icb_noオペランドの指定値を設定します。

icb_no=タイマトランザクション登録最大数  〜〈符号なし整数〉((0〜65535))《1000》

同時に起動待ち,および同期点待ちとなるタイマトランザクションの登録要求の最大数を指定します。

max_message_size=メッセージ引き渡しエリアの最大サイズ  〜〈符号なし整数〉((1000〜16777216))《33000》(単位:バイト)

クライアントから受信したメッセージ,またはDBキューのメッセージをサービス関数に引き渡す格納領域(IMA)の大きさを,指定します。

サービス関数の入力パラメタ長(in_len)の最大値を指定してください。入力パラメタ長の最大値は,クライアントから受信したメッセージサイズとDBキューのメッセージサイズとを比較して,大きい方のサイズを指定してください。

max_outmessage_size=メッセージ応答エリアの最大サイズ  〜〈符号なし整数〉((1000〜16777216))《33000》(単位:バイト)

クライアントに対する応答メッセージを格納する領域(OMA)の大きさを指定します。

サービス関数の出力パラメタ長(out_len)の最大値を指定してください。

recv_message_buf_size=受信バッファサイズ  〜〈符号なし整数〉((1000〜66000))《33000》(単位:バイト)

クライアントからメッセージを受信する場合に使用するバッファサイズ(IBFサイズ)を指定します。

クライアントからの送信メッセージサイズが32キロバイトを超える場合(フラグメントメッセージ)は,33000以上を指定してください。ネームサービスを使用する場合は,16000以上を指定してください。ただし,RPC関連定義のrpc_name_service_extendオペランドに1を指定している場合は,33000以上を指定してください。

ノード間負荷バランス機能を使用する場合は,メモリ関連定義のsend_message_buf_sizeオペランドの指定値と同じ値を指定してください。send_message_buf_sizeオペランドの指定値と異なる値を指定した場合は,ノード間負荷バランス機能を使用したメッセージの転送処理に失敗するおそれがあります。

recv_message_buf_cnt=受信バッファ面数  〜〈符号なし整数〉((1〜2000000))《128》

受信バッファの面数を指定します。

受信バッファはRPCサービス要求,またはMCPメッセージを受信してからUAP実行前まで,メッセージ単位(フラグメントメッセージの場合は分割メッセージ単位)に使用します。そのため,pce_noオペランドの指定値,およびフラグメントメッセージの有無を考慮して,受信バッファの面数を指定してください。

RPCサービス要求受信時,またはMCPメッセージ受信時に受信バッファ面数が不足していた場合は,RPCサービス要求,MCPメッセージを受信できません。また,フラグメントが発生していない場合は,プロセス内で処理中および処理待ち(滞留)となるRPCサービス要求数,MCP受信メッセージの最大値は,受信バッファ面数となります。受信バッファ面数に最小の値を設定する場合は,最低でも処理スレッド数分(プロセス関連定義のthread_noオペランドの指定値+プロセス関連定義のreserve_thread_noオペランドの指定値+(TP1/FSPのタイマ関連定義のtim_perm_thread_noオペランドの指定値+1)+2)を指定してください。tim_perm_thread_noオペランドについては,TP1/FSPの関連ドキュメントを参照してください。

RPC関連定義のrpc_name_service_extendオペランドに1を指定している場合は,3以上を指定してください。

send_message_buf_size=送信バッファサイズ  〜〈符号なし整数〉((1000〜66000))《33000》(単位:バイト)

TP1/EEからメッセージを送信する場合に使用するバッファサイズ(OBFサイズ)を指定します。

送信メッセージサイズが送信バッファサイズより大きい場合は,分割してフラグメントメッセージとしてメッセージを送信します。ノード間負荷バランス機能を使用する場合は,メモリ関連定義のrecv_message_buf_sizeオペランドの指定値と同じ値を指定してください。recv_message_buf_sizeオペランドの指定値と異なる値を指定した場合は,ノード間負荷バランス機能を使用したメッセージの転送処理に失敗するおそれがあります。

send_message_buf_cnt=送信バッファ面数  〜〈符号なし整数〉((1〜2000000))《128》

送信バッファの面数を指定します。

フラグメントメッセージが発生した場合は,メッセージの分割数の送信バッファを使用するので,分割数を考慮して送信バッファの面数を指定してください。

フラグメントメッセージが発生しない場合,送信バッファ数は次に示す計算式で算出してください。

送信バッファ数=(システム内で同時に発行するRPCサービス要求数
                +システム内で同時に発行する他システム向けDBキューの
                  書き込み要求数
                +システム内で同時に発行するMCPメッセージの送信数
                +システム内で同時に起動するトランザクションブランチ数※1
                +システム内で同時に起動するトランザクションブランチ間通信数※2
                +処理スレッド数※3)×1.5※4
注※1

RPC関連定義のrpc_replymsg_saveオペランドに,Yを指定した場合に必要です。

注※2

トランザクショナルRPCを使用する場合,次の値を加算してください。

 処理スレッド数+回復スレッド数+1

注※3

プロセス関連定義のfsp_useオペランドに,Yを指定した場合に必要です。

注※4

1.5とは,安全率です。

dbq_recv_message_buf_cnt=DBキュー機能で使用する受信バッファ面数  〜〈符号なし整数〉((1〜240000))《128》

受信バッファの面数を指定します。受信バッファは,DBキューを使用した,TCP/IPによるシステム間通信で使用します。

受信バッファは,DBキューのイベント通知メッセージを受信してから処理キューを登録するまでメッセージ単位に使用されます。したがって,処理キュー登録数(メモリ関連定義のpce_noオペランドの指定値)も考慮して,dbq_recv_message_buf_cntオペランドの値を指定してください。ほかのシステムのすべてのDBキュー数を最小基準値として,それ以上の面数を指定してください。イベント通知メッセージの受信時に受信バッファ面数が不足していた場合,イベント通知メッセージを受信できません。

dbq_send_message_buf_cnt=DBキュー機能で使用する送信バッファ面数  〜〈符号なし整数〉((1〜240000))《128》

DBキュー機能で使用する送信バッファの面数を指定します。ほかのシステムのすべてのDBキュー数を最小値として,それ以上の面数を指定してください。

dbq_max_message_size=DBキュー機能で使用する最大メッセージサイズ  〜〈符号なし整数〉((1000〜8388608))《33000》(単位:バイト)

DBキュー機能で使用するメッセージの最大サイズを指定します。複数指定したeedbqtblhコマンドの-zオプションの指定値のうち,いちばん大きい値をdbq_max_message_sizeオペランドに指定してください。

dbq_use_buf_cnt=DBキュー機能で使用する最大バッファ面数  〜〈符号なし整数〉((1〜240000))《128》

メッセージの書き込み(ee_dbq_msgput関数),およびメッセージの読み出し(ee_dbq_msgrefer関数)で使用するバッファ面数を指定します。これらの関数の呼び出し時に1バッファ使用します。1トランザクションでこれらの関数を呼び出す合計回数と同時に実行するトランザクション数を考慮して指定してください。

memory_cobol_area_size=初期化確保時のプールサイズ,追加確保時のプールサイズ  〜〈符号なし整数〉((1〜1048576))(単位:キロバイト)

COBOL用メモリ管理機能でメモリプールをプロセス単位で作成する場合に,COBOL用メモリ管理機能でプロセス単位に確保するプールサイズを指定します。

オペランドの第一指定値には,初期化時に確保するプールのサイズを指定します。第二指定値には,追加確保時に確保するプールのサイズを指定します。memory_cobol_area_sizeオペランドを指定する場合には必ず両方の値を指定してください。

ただし,実際のメモリ要求などで,追加確保プールサイズは指定値と一致しないことがあります。

COBOL用メモリ管理機能でメモリプールを処理スレッド単位で作成する(memory_cobol_area_thd_sizeオペランドを指定)場合,このオペランドを指定する必要はありません。このオペランドは,プロセス関連定義のcobol_use_flagオペランドにYを指定した場合に有効になります。

memory_cobol_area_thd_size=初期化確保時のプールサイズ,追加確保時のプールサイズ  〜〈符号なし整数〉((1〜1048576))(単位:キロバイト)

COBOL用メモリ管理機能でメモリプールを処理スレッド単位で作成する場合に,COBOL用メモリ管理機能で処理スレッド単位に確保するプールサイズを指定します。このオペランドを指定した場合,COBOL用のメモリプールを処理スレッド単位で管理します。

オペランドの第一指定値には,初期化時に確保するプールのサイズを指定します。第二指定値には,追加確保時に確保するプールのサイズを指定します。memory_cobol_area_thd_sizeオペランドを指定する場合には必ず両方の値を指定してください。

ただし,実際のメモリ要求などで,追加確保プールサイズは設定値と一致しないことがあります。

このオペランドは,プロセス関連定義のcobol_use_flagオペランドにYを指定した場合に有効になります。また,このオペランドとmemory_cobol_area_sizeオペランド(COBOL用メモリ管理機能でプロセス単位にメモリプールを作成)の両方を指定した場合,memory_cobol_area_sizeオペランドの指定は無効となります。

コマンド形式

なし。