Hitachi

ノンストップデータベース HiRDB Version 9 システム定義(Windows(R)用)


9.2.20 共用メモリに関するオペランド

◆ pd_shmpool_attribute = free|fixed

HiRDBのユニットコントローラが使用する共用メモリをメモリ上に固定するかどうかを指定します。なお,Windowsのバージョンによって,サポートの有無が異なります。Windowsの前提条件については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「システム設計」の「共用メモリのページ固定」を参照してください。サポートされていない場合は,このオペランドにfixedを指定しても無効になります。

free:

メモリ上に固定しません。実メモリ量によっては,別の共用メモリのページングが発生し,性能に影響する場合があります。

fixed:

メモリ上に固定します。

《利点》

HiRDBが使用する共用メモリをメモリ上に固定(fixed指定)すると,共用メモリのページングを防止できます。このため,共用メモリに対するアクセス性能が向上します。

《指定値の目安》

算出した共用メモリサイズとサーバマシンの実メモリから,メモリを固定するかどうかを決定してください。HiRDBがメモリを固定できるサイズに上限があるため,メモリを固定するとほかのメモリのページングが多発することがあります。したがって,実メモリや全使用量に対する共用メモリプールの占める割合をよく検討する必要があります。

ユニットコントローラが使用する共用メモリの計算式,及び各サーバが使用する共用メモリについては,マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照してください。

《注意事項》

ページ固定に対応しているWindowsでfixedを指定する場合の注意事項を次に示します。

  • pdntenvコマンドを使用して,共用メモリをページングファイルに割り当てる必要があります。pdntenvコマンドについては,マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

  • 共用メモリはWindowsのLarge Pageでのページサイズに切り上げて取得するため,メモリ所要量を見積もるときは注意してください。WindowsのLarge Pageのページサイズについては,pdntenv -osコマンドで確認してください。

  • メモリ断片化によって物理メモリが確保できない場合,HiRDBの開始やページ固定に失敗するときがあります。この場合,共用メモリ再利用機能の使用を検討してください。共用メモリ再利用機能については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「システム設計」を参照してください。

◆ pd_shmpool_control = unit|server

このオペランドはHiRDB/パラレルサーバ限定のオペランドです。

HiRDBが使用する共用メモリの制御方法を指定します。

unit:

HiRDB/パラレルサーバをユニットごとに開始,終了する場合に適した制御方法です。

server:

HiRDB/パラレルサーバをユーザサーバごとに開始,終了する場合(pdstart又はpdstopコマンドに-sオプションを指定する場合)に適した制御方法です。

なお,ここでいうユーザサーバとは,フロントエンドサーバ,ディクショナリサーバ,及びバックエンドサーバを指しています。

《指定値の目安》
  • 通常は,このオペランドを省略するか,又はunitを指定してください。

  • 影響分散スタンバイレス型系切り替え機能を適用しないシステムで,ユーザサーバの開始及び終了操作をする場合は,次に説明する「■共用メモリの確保及び解放の仕組み」を参照し,このオペランドにserverを指定するかどうかを検討してください。

■共用メモリの確保及び解放の仕組み

HiRDBが使用する共用メモリは,ユニットの開始時にOSから一括確保し,HiRDBが共用メモリプール上で管理します。ユーザサーバの開始時,そのユーザサーバで使用する分の共用メモリは,共用メモリプールから複数回に分けて確保されます。

また,ユーザサーバの終了時には,ユーザサーバの開始時に確保した共用メモリを解放します。

このため,HiRDB/パラレルサーバの開始及び終了操作をユーザサーバごとに行っている場合,共用メモリプール内で領域の断片化が発生することがあります。領域の断片化が進むと,ユーザサーバの開始時に共用メモリが確保できないためにユニットが異常終了することがあります。このオペランドにserverを指定すると,断片化が発生しても,ユーザサーバの開始時に必要な共用メモリが確保できるようになります。

なお,影響分散スタンバイレス型系切り替え機能を適用しているユニットの場合,ユーザサーバの開始及び終了操作を行っても,共用メモリプール内で領域の断片化が発生しないようにHiRDBが制御しています。そのため,影響分散スタンバイレス型系切り替え機能を適用したユニット内のバックエンドサーバに対してだけ,開始及び終了操作を行う場合は,このオペランドにserverを指定する必要はありません。

◆ pd_dbbuff_attribute = free|fixed

グローバルバッファが使用する共用メモリを実メモリ上に固定するかどうかを指定します。なお,Windowsのバージョンによって,サポートの有無が異なります。Windowsの前提条件については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「システム設計」の「共用メモリのページ固定」を参照してください。サポートされていない場合は,このオペランドにfixedを指定しても無効になります。

free:

グローバルバッファが使用する共用メモリを実メモリにページ固定しません。

fixed:

グローバルバッファが使用する共用メモリを実メモリにページ固定します。

《利点》

グローバルバッファが使用する共用メモリを実メモリにページ固定(fixed指定)すると,共用メモリのページングを防止できます。このため,共用メモリに対するアクセス性能が向上します。

《指定値の目安》
  • 実メモリに余裕があり,性能を重視する場合はfixedを指定してください。

  • 算出した共用メモリサイズとサーバマシンの実メモリから,メモリを固定するかどうかを決定してください。実メモリに比べて多大なメモリをページ固定すると,ページングの多発や仮想メモリ不足の原因になります。したがって,実メモリや全仮想メモリに対する共用メモリプールの占める割合を検討する必要があります。グローバルバッファが使用する共用メモリの計算式については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照してください。

  • ページ固定は,実メモリサイズからページ固定する共用メモリサイズを減算したサイズが,スワップ領域サイズからページ固定する共用メモリサイズを減算したサイズの1/2以上にならないことを目安にしてください。

《ほかの機能との関連》
  • fixedを指定した場合,動的変更したグローバルバッファが使用する共用メモリも実メモリ上に固定されます。そのため,実メモリサイズを十分考慮してグローバルバッファを追加又は変更してください。

《注意事項》

ページ固定に対応しているWindowsでfixedを指定する場合の注意事項を次に示します。

  • pdntenvコマンドを使用して,共用メモリをページングファイルに割り当てる必要があります。pdntenvコマンドについては,マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

  • 共用メモリはWindowsのLarge Pageでのページサイズに切り上げて取得するため,メモリ所要量を見積もるときは注意してください。WindowsのLarge Pageのページサイズについては,pdntenv -osコマンドで確認してください。

  • SHMMAXオペランドにWindowsのLarge Pageのページサイズに切り上げた値を指定してください。

  • HiRDB起動時にグローバルバッファプールが使用する共用メモリがメモリ上に固定できない場合,KFPH23045-Wメッセージを出力します。その場合,fixedを指定しても共用メモリの一部又はすべてがメモリ上にページ固定されないで,処理を続行します。この場合,共用メモリ再利用機能の使用を検討してください。共用メモリ再利用機能については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「システム設計」を参照してください。

◆ pd_shared_memory_report = Y|N

このオペランドは32ビットモード限定のオペランドです。

HiRDB開始時に,共用メモリに関するレポートメッセージを出力するかどうかを指定します。

Y:出力します。

N:出力しません。

レポート対象の共用メモリ,及び出力されるメッセージを次の表に示します。

項番

対象の共用メモリ

出力されるメッセージ

メッセージの概要

1

グローバルバッファ用共用メモリ

KFPH23048-Iメッセージ

確保したグローバルバッファ用共用メモリのサイズを通知します。

2

KFPH23049-Wメッセージ

1.2ギガバイトを超えるグローバルバッファ用共用メモリを確保した時に出力します。

3

KFPH23050-Iメッセージ

サーバ内の各グローバルバッファ用共用メモリが使用する管理領域サイズの最大値を通知します。

4

KFPH23051-Wメッセージ

SHMMAXオペランドの指定値が200メガバイト(グローバルバッファの動的変更機能(pd_dbbuff_modify=Y)を使用している場合は50メガバイト)を超える値を指定した時に出力します。

5

ユニットコントローラ用共用メモリ

KFPS05604-Iメッセージ

確保したユニットコントローラ用共用メモリのサイズを通知します。

《指定値の目安》

通常,このオペランドを指定する必要はありません。

このオペランドにNを指定すると,上記の五つのメッセージを出力しません。イベント監視メッセージの出力に影響があるなどの理由で,警告メッセージだけを出力したくない場合は,イベントログへのメッセージ出力抑止(pdmlgputオペランド)の使用を検討してください。イベントログへのメッセージ出力抑止については,マニュアル「HiRDB Version 9 システム運用ガイド」の「イベントログへのメッセージ出力抑止」を参照してください。

《注意事項》
  • 64ビットモードのWindowsの場合で,かつ32ビットエミュレーションモードでHiRDBを運用しているときも,この機能が有効となります。警告メッセージが出力されることがありますが,警告メッセージは無視してください。このメッセージの出力を抑止する方法については,《指定値の目安》を参照してください。

  • KFPH23049-Wメッセージは,グローバルバッファ用共用メモリが1.2ギガバイトを超えたときに出力されます。KFPH23049-Wメッセージが出力された場合は,HiRDBの処理プロセスで共用メモリのアタッチができないためHiRDBが開始できなかったり,オンライン中にメモリ不足でユニットダウンしたり,再開始ができなくなったりするおそれがあります。KFPH23049-Wメッセージの対策を参照し,適切な対応を検討してください。

  • KFPH23051-Wメッセージは,共用メモリセグメントサイズの上限値(SHMMAXオペランド指定値)に200メガバイト(グローバルバッファの動的変更機能(pd_dbbuff_modify=Y)を使用している場合は50メガバイト)を超える値を指定した時に出力されます。KFPH23051-Wメッセージが出力された場合は,HiRDBの処理プロセスで共用メモリのアタッチができないためHiRDBが開始できなかったり,オンライン中にメモリ不足でユニットダウンしたり,再開始ができなくなったりするおそれがあります。KFPH23051-Wメッセージの対策を参照し,適切な対応を検討してください。

◆ pd_sds_shmpool_size = シングルサーバ用共用メモリサイズ

〜<符号なし整数>(単位:キロバイト)

  • 32ビットモードの場合:((1〜200000))

  • 64ビットモードの場合:((1〜4000000000))

このオペランドは,HiRDB/シングルサーバ限定のオペランドです。ユニットコントローラ用の共用メモリの中で,シングルサーバが使用する領域の大きさをキロバイト単位で指定します。

《指定値の目安》

通常はこのオペランドを省略してください。省略した場合,HiRDBがこのオペランドの値を自動で計算します。その際,関連する定義の指定値を基に値を計算するため,関連する定義には適切な値を指定してください。関連する定義については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」に記載されている「シングルサーバが使用する共用メモリの計算式」を参照してください。

計算式中の変数の説明に現れるオペランドの値を途中で変更した場合は,このオペランドの値をHiRDBが自動的に再計算します。

また,計算式中の変数「インデクス用のグローバルバッファプール数」,及び「グローバルバッファ総数(pdbufferオペランドの指定数)」は,32ビットモードの場合は500,64ビットモードの場合は1000が仮定されます。

《指定値のチューニング方法》

次に示すメッセージが出力された場合は,このオペランドの指定値を大きくしてください。

  • KFPA20003-E

  • KFPD00005-E

  • KFPD00012-E

  • KFPD00021-E

  • KFPH20003-E

《注意事項》

このオペランドの省略時,関連する定義に適切な値が指定されていないと,HiRDBが自動計算した値が必要以上に大きくなって共用メモリをむだに確保してしまったり,逆に小さ過ぎて次に示す問題が発生したりします。

  • HiRDBを開始できない

  • UAP又はユティリティが実行できない

また,このオペランドに直接指定した値が,必要以上に大き過ぎたり,小さ過ぎたりした場合も同様の問題が発生します。

《各見積もり式への影響》

pd_sds_shmpool_sizeオペランドの指定値を変更すると,次の見積もり式に影響があります。

マニュアル「HiRDB Version 9 システム導入・設計ガイド」:

  • 「シングルサーバが使用する共用メモリの計算式」

◆ pd_dic_shmpool_size = ディクショナリサーバ用共用メモリサイズ

〜<符号なし整数>(単位:キロバイト)

  • 32ビットモードの場合:((1〜200000))

  • 64ビットモードの場合:((1〜4000000000))

このオペランドはHiRDB/パラレルサーバ限定のオペランドです。ユニットコントローラ用の共用メモリの中で,ディクショナリサーバが使用する領域の大きさをキロバイト単位で指定します。

《指定値の目安》

通常はこのオペランドを省略してください。省略した場合,HiRDBがこのオペランドの値を自動で計算します。その際,関連する定義の指定値を基に値を計算するため,関連する定義には適切な値を指定してください。関連する定義については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」に記載されている「ディクショナリサーバが使用する共用メモリの計算式」を参照してください。

計算式中の変数の説明に現れるオペランドの値を途中で変更した場合は,このオペランドの値をHiRDBが自動的に再計算します。

《指定値のチューニング方法》

次に示すメッセージが出力された場合は,このオペランドの指定値を大きくしてください。

  • KFPA20003-E

  • KFPD00005-E

  • KFPD00012-E

  • KFPD00021-E

  • KFPH20003-E

《注意事項》

このオペランドの省略時,関連する定義に適切な値が指定されていないと,HiRDBが自動計算した値が必要以上に大きくなって共用メモリをむだに確保してしまったり,逆に小さ過ぎて次に示す問題が発生したりします。

  • ユニットを開始できない

  • UAP又はユティリティが実行できない

また,このオペランドに直接指定した値が,必要以上に大き過ぎたり,小さ過ぎたりした場合も同様の問題が発生します。

◆ pd_bes_shmpool_size = バックエンドサーバ用共用メモリサイズ

〜<符号なし整数>(単位:キロバイト)

  • 32ビットモードの場合:((1〜200000))

  • 64ビットモードの場合:((1〜4000000000))

このオペランドはHiRDB/パラレルサーバ限定のオペランドです。ユニットコントローラ用の共用メモリの中で,バックエンドサーバが使用する領域の大きさをキロバイト単位で指定します。

《指定値の目安》

通常はこのオペランドを省略してください。省略した場合,HiRDBがこのオペランドの値を自動で計算します。その際,関連する定義の指定値を基に値を計算するため,関連する定義には適切な値を指定してください。関連する定義については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」に記載されている「バックエンドサーバが使用する共用メモリの計算式」を参照してください。

計算式中の変数の説明に現れるオペランドの値を途中で変更した場合は,このオペランドの値をHiRDBが自動的に再計算します。

《指定値のチューニング方法》

次に示すメッセージが出力された場合は,このオペランドの指定値を大きくしてください。

  • KFPA20003-E

  • KFPD00005-E

  • KFPD00012-E

  • KFPD00021-E

  • KFPH20003-E

《注意事項》

このオペランドの省略時,関連する定義に適切な値が指定されていないと,HiRDBが自動計算した値が必要以上に大きくなって共用メモリをむだに確保してしまったり,逆に小さ過ぎて次に示す問題が発生したりします。

  • ユニットを開始できない

  • UAP又はユティリティが実行できない

また,このオペランドに直接指定した値が,必要以上に大き過ぎたり,小さ過ぎたりした場合も同様の問題が発生します。

◆ SHMMAX 共用メモリセグメントサイズの上限値

〜<符号なし整数>(単位:メガバイト)

  • 32ビットモードの場合:((6〜2047))《100》

  • 64ビットモードの場合:((6〜4194304))《1024》

グローバルバッファ用の共用メモリセグメントサイズの上限値をメガバイト単位で指定します。

HiRDBはこのオペランドの指定値を上限として,グローバルバッファ用の共用メモリセグメントを確保します。サーバマシン内のRDエリアに割り当てるグローバルバッファサイズの合計がこのオペランドの値を超える場合は,複数の共用メモリセグメントを割り当てます。

HiRDBは,HiRDB開始時に1サーバ当たり最大512セグメントのグローバルバッファプール用の共用メモリを確保できます。グローバルバッファプールが使用している共用メモリセグメントの情報はpdls -d memコマンドで確認できます。pdls -d memコマンドについては,マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

《指定値の目安》
  • 32ビットモードの場合

    通常,このオペランドを指定する必要はありません。ただし,HiRDB開始時にKFPH23005-Eメッセージ(エラーコード24)を出力して,HiRDBが開始に失敗する場合だけ指定するようにしてください。詳細は,KFPH23051-Wメッセージの対策を参照してください。

    KFPH23005-Eメッセージのエラーコード20が出力される場合,マニュアル「HiRDB Version 9 メッセージ」を参照して対策してください。

    グローバルバッファの動的変更を適用している場合,SHMMAXオペランドの値が大き過ぎると,再開始時に必要な領域が確保できずに再開始が失敗するおそれがあります。それを避けるために,SHMMAXオペランドには50以下を指定してください。

  • 64ビットモードの場合

    グローバルバッファプール用共用メモリのサイズが512GB以下の場合,このオペランドを指定する必要はありません。

    グローバルバッファプール用共用メモリのサイズが512GBより大きい場合,次の式を満たす値を指定してください。

    (SHMMAXオペランドの指定値)×512≧(グローバルバッファプール用共用メモリのサイズ)

《オペランドの規則》

指定範囲外の値を指定した場合は省略値が適用されます。

《注意事項》
  • SHMMAXの指定値には,グローバルバッファプール用共用メモリの管理領域長より大きい値を指定してください。大きい値を指定しないと,HiRDBを開始できません。グローバルバッファプール用共用メモリの管理領域長の計算式については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「グローバルバッファが使用する共用メモリの計算式」を参照してください。

  • グローバルバッファの動的変更機能を使用している場合,SHMMAXオペランドの指定値の変更は正常停止後だけできます。強制停止後,又は計画停止後の再開始時にKFPH23005-Eメッセージのエラーコード20が出力された場合は,マニュアル「HiRDB Version 9 メッセージ」のKFPH23005-Eメッセージのエラーコード20にある表の項番3を参照して,指定値を変更してください。

  • 共用メモリをHiRDB運用ディレクトリ下のファイルに割り当てる場合,HiRDB運用ディレクトリがあるディスクの空き容量が十分でないと,ディスク容量不足になります。

  • 共用メモリをページファイルに割り当てる場合,ページファイル容量が十分でないと,ページファイル容量不足になります。

  • 共用メモリのページ固定機能を使用する場合は,このオペランドにはLarge Pageのページサイズを整数倍にした値を指定してください。共用メモリのページ固定は次の場合に使用されます。

    ・pd_dbbuff_attributeオペランドにfixedを指定する

    ・pd_max_resident_rdarea_noオペランドに1以上を指定する

    指定値がページサイズの整数倍でない場合は,HiRDBがページサイズの整数倍の値に補正します。

  • SHMMAXオペランドの値を変更した場合は,システム環境変数PDUXPLSHMMAXに必要なリソース数(共用メモリ使用数)を再度見積もってください。

  • pd_shm_reuseオペランドにYを指定して共用メモリ再利用機能を使用する場合,グローバルバッファプール用共用メモリサイズはこのオペランド指定値の整数倍に切り上げられます。共用メモリサイズが必要以上に大きくならないように,このオペランドに適切な値を指定することを検討してください。グローバルバッファプール用共用メモリサイズの詳細については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「グローバルバッファが使用する共用メモリの計算式」を参照してください。

《ほかのオペランドとの関連》

このオペランドは次に示すオペランドと関連があります。

  • pd_dbbuff_modify

  • pdbuffer

  • pd_max_add_dbbuff_no

  • pd_max_add_dbbuff_shm_no

  • システム環境変数PDUXPLSHMMAX

《各見積もり式への影響》

SHMMAXオペランドの指定値を変更すると,次の見積もり式に影響があります。

マニュアル「HiRDB Version 9 システム導入・設計ガイド」:

  • 「HiRDB/シングルサーバのメモリ所要量の見積もり」の「インメモリデータ処理で必要なメモリ所要量」

  • 「HiRDB/シングルサーバのメモリ所要量の見積もり」の「グローバルバッファが使用する共用メモリの計算式」

  • 「HiRDB/パラレルサーバのメモリ所要量の見積もり」の「インメモリデータ処理で必要なメモリ所要量」

  • 「HiRDB/パラレルサーバのメモリ所要量の見積もり」の「グローバルバッファが使用する共用メモリの計算式」

  • 「リソース数に関連する環境変数の見積もり」の「HiRDB/シングルサーバの場合」

  • 「リソース数に関連する環境変数の見積もり」の「HiRDB/パラレルサーバの場合」

◆ pd_shm_reuse = Y|N

共用メモリ再利用機能を適用するかどうかを指定します。

Y:共用メモリ再利用機能を適用する。

N:共用メモリ再利用機能を適用しない。

《指定値の目安》

次のどちらの条件も満たす場合,このオペランドにYを指定してください。

  1. 次のどちらかの方法で共用メモリのページ固定化機能を適用する。

    ・pd_shmpool_attributeオペランドにfixedを指定している。

    ・pd_dbbuff_attributeオペランドにfixedを指定している。

  2. HiRDB停止後の開始,リラン,系切り替えで,次のどちらかの現象が発生する。

    ・KFPO00113-E(errno=12),KFPH23004-E,又はKFPH23005-E(errno=20)メッセージを出力して,メモリ不足によってHiRDBの開始に失敗する。

    ・KFPO00107-E("shmget(omminit(fixed))"),又はKFPH23045-Wメッセージを出力して,共用メモリの固定化に失敗する。