分散トランザクション処理機能 OpenTP1 解説
共用メモリとは,複数のプロセスで共有して参照・更新するメモリです。主に,OpenTP1の制御テーブルと共用バッファが取られます。OpenTP1の共用メモリは,OSの共用メモリ機能を利用していて,プロセス間通信のオーバヘッドを削減するために使われます。
OpenTP1が使う共用メモリの量は,システム環境定義のstatic_shmpool_sizeオペランドに静的共用メモリの総量を,dynamic_shmpool_sizeオペランドに動的共用メモリの総量を指定します。OpenTP1はこの二つを合わせた量の共用メモリを使います。通常は,OpenTP1の稼働中に常に使うデータは静的共用メモリに,サービス処理の実行時にオンデマンドで占有するデータを動的共用メモリに設定します。
共用メモリのバッファ領域をユーザサーバ間で共用する指定をすると,共用メモリの量を節約できます。バッファテーブルの共用については,「3.4.4 バッファ領域の共用による共用メモリの節約」を参照してください。
OpenTP1の稼働中に使用している共用メモリの状態を知りたい場合は,dcshmlsコマンドを実行します。dcshmlsコマンドを実行すると,現在使用している共用メモリの合計値や共用メモリの使用率などを表示できます。オプションの指定によって,静的共用メモリと動的共用メモリに分けて表示できます。
動的共用メモリの一部は,DAMファイルの更新に使用します。動的共用メモリを効率良く利用するため,同時に起動するDAMファイルを更新するトランザクションブランチの数を,DAMサービス定義で指定します。トランザクションブランチの数を指定することで,DAMファイル更新用の動的共用メモリを,OpenTP1の開始時に確保します。定義した数を超えるトランザクションブランチが同時に,DAMファイルを更新しようとした場合には,トランザクション実行時に新たな動的共用メモリを一時的に確保します。一時的に確保した動的共用メモリは,トランザクション終了後に解放します。
DAMサービスを使う場合,システム環境定義で指定した共用メモリとは別に,DAMブロックを退避するためのバッファ領域用に共用メモリを確保します。DAMサービス用の共用メモリ領域は,DAMサービス定義で指定します。
TAMサービスを使用する場合,システム環境定義で指定した共用メモリとは別に,TAMテーブル用に共用メモリを確保します。TAMサービス用の共用メモリ領域は,TAMサービス定義で指定します。
ISTサービスを使う場合,システム環境定義で指定した共用メモリとは別に,ISTテーブル用の共用メモリを確保します。ISTテーブルに使う共用メモリ領域は,ISTサービス定義で指定します。
MCFサービスは,静的共用メモリおよび動的共用メモリを使用します。
静的共用メモリについては,次に示す二つの指定を両方とも行ってください。
MCFマネジャ共通定義のコマンドの-pオプションの指定値 +すべてのMCF通信サービスのMCFトレースバッファサイズ※ +すべてのアプリケーション起動サービスのMCFトレースバッファサイズ※
mcfttrc定義コマンドの-tオプションのsizeオペランドの指定値×2
MCF静的共用メモリが不足した場合,静的共用メモリ(システム環境定義のstatic_shmpool_sizeオペランドの指定値)の未使用領域から,MCFマネジャ共通定義(mcfmcomn)の-pオプションで指定したサイズの1/2のサイズ分を自動的に追加確保します。メモリの自動確保は最大254回まで行います。それでもメモリが不足した場合は,ログメッセージとしてKFCA10230-Eを出力し,障害情報を出力します。ただし,メモリの自動確保回数が254回以内であっても,メモリの自動確保時に静的共用メモリ不足を検出した場合は,ログメッセージとしてKFCA10240-Eを出力して,障害情報を出力します。
メモリ追加確保時に,ログメッセージとしてKFCA10242-Iを出力するかどうかは,MCFマネジャ共通定義(mcfmcomn)の-iオプションで指定します。静的共用メモリ不足の発生を検知したい場合は,-iオプションにmsgを指定し,メッセージを出力するように指定してください。
リアルタイム統計情報サービスは,システム環境定義に定義した共用メモリのほかに,取得した統計情報を格納するためのRTSサービス用の共用メモリを使用します。
RTSサービス用の共用メモリのサイズは,リアルタイム統計情報サービス定義のrts_service_maxオペランド,およびrts_item_maxオペランドの指定値によって決定されます。
All Rights Reserved. Copyright (C) 2006, 2012, Hitachi, Ltd.