Hitachi

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


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

◆ pd_shmpool_attribute = free|fixed|hugepage

HiRDBのユニットコントローラが使用する共用メモリをメモリ上に固定するかどうかを指定します。なお,AIX版のHiRDB(32ビットモード)では共用メモリの固定化をサポートしていないため,このオペランドにfixedを指定しても無効になります。

free:

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

fixed:

メモリ上に固定します。

hugepage:

この指定値はLinux版限定の指定値です。

LinuxのHugepage機能を用いてメモリ上に固定します。

《利点》

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

LinuxのHugepage機能を用いてメモリ上に固定(hugepage指定)すると,共用メモリのページサイズが通常のページサイズ(4KB)からhugepagesのページサイズ(2MB)に拡大されます。ページサイズが拡大すると,仮想アドレスを実アドレスに変換するための管理領域(PTE:Page Table Entry)を通常よりも小さくできるため,メモリ不足を防止できます。また,仮想アドレスと物理アドレスの変換回数が少なくなり,ページフォルトの発生を抑えることができます。これによって,トランザクション性能が向上することがあります。

《指定値の目安》

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

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

《ほかの機能との関連》

AIX版でfixedを指定する場合,次に示す制限があるため,64ビットモードのHiRDBサーバと32ビットモードのクライアントプロセスとの間ではプロセス間メモリ通信機能を使用できません。

  • OSのオペレーティングシステムパラメタの設定が必要

  • システム共通定義に環境変数putenv EXTSHM ONを設定できない

OSのオペレーティングシステムパラメタ,環境変数EXTSHMの詳細については,マニュアル「HiRDB システム導入・設計ガイド」の「AIX固有のパラメタ指定」を参照してください。

《注意事項》

AIX版でfixedを指定する場合の注意事項を次に示します。

  • OSのオペレーティングシステムパラメタの設定をしてください。OSのオペレーティングシステムパラメタの設定をしないと,このオペランドの指定は無効になります。設定するOSのオペレーティングシステムパラメタの詳細については,マニュアル「HiRDB システム導入・設計ガイド」の「AIX固有のパラメタ指定」を参照してください。

  • 共用メモリがメモリ上に固定されているかどうかは,AIXのコマンドで確認できます。詳細については,AIXのマニュアルを参照してください。

Linux版でhugepageを指定する場合,LinuxのHugepage機能を有効にする必要があります。Hugepage機能については,OSのマニュアルを参照してください。Hugepage機能を有効にするときに設定するOSのオペレーティングシステムパラメタの詳細については,マニュアル「HiRDB システム導入・設計ガイド」の「LinuxのHugepage機能の指定」を参照してください。

◆ 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|hugepage

グローバルバッファが使用する共用メモリを実メモリ上に固定するかどうかを指定します。なお,AIX版のHiRDB(32ビットモード)では共用メモリの固定化をサポートしていないため,このオペランドにfixedを指定しても無効になります。

free:

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

fixed:

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

hugepage:

この指定値はLinux版限定の指定値です。

LinuxのHugepage機能を用いて,グローバルバッファが使用する共用メモリを実メモリにページ固定します。

《利点》

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

LinuxのHugepage機能を用いてメモリ上に固定(hugepage指定)すると,共用メモリのページサイズが通常のページサイズ(4KB)からhugepagesのページサイズ(2MB)に拡大されます。ページサイズが拡大すると,仮想アドレスを実アドレスに変換するための管理領域(PTE:Page Table Entry)を通常よりも小さくできるため,メモリ不足を防止できます。また,仮想アドレスと物理アドレスの変換回数が少なくなり,ページフォルトの発生を抑えることができます。これによって,トランザクション性能が向上することがあります。

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

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

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

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

  • AIX版でfixedを指定する場合,次に示す制限があるため,64ビットモードのHiRDBサーバと32ビットモードのクライアントプロセスとの間ではプロセス間メモリ通信機能を使用できません。

    ・OSのオペレーティングシステムパラメタの設定が必要

    ・システム共通定義に環境変数putenv EXTSHM ONを設定できない

    OSのオペレーティングシステムパラメタ,環境変数EXTSHMの詳細については,マニュアル「HiRDB システム導入・設計ガイド」の「AIX固有のパラメタ指定」を参照してください。

《注意事項》

AIX版でfixedを指定する場合の注意事項を次に示します。

  • OSのオペレーティングシステムパラメタの設定をしてください。OSのオペレーティングシステムパラメタの設定をしないと,このオペランドの指定は無効になります。設定するOSのオペレーティングシステムパラメタの詳細については,マニュアル「HiRDB システム導入・設計ガイド」の「AIX固有のパラメタ指定」を参照してください。

  • 共用メモリがメモリ上に固定されているかどうかは,AIXのコマンドで確認できます。詳細については,AIXのマニュアルを参照してください。

Linux版でhugepageを指定する場合,LinuxのHugepage機能を有効にする必要があります。Hugepage機能については,OSのマニュアルを参照してください。Hugepage機能を有効にするときに設定するOSのオペレーティングシステムパラメタの詳細については,マニュアル「HiRDB システム導入・設計ガイド」の「LinuxのHugepage機能の指定」を参照してください。

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

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

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

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

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

《指定値の目安》

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

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

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

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

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

  • KFPA20003-E

  • KFPD00005-E

  • KFPD00012-E

  • KFPD00021-E

  • KFPH20003-E

《注意事項》

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

  • HiRDBを開始できない

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

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

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

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

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

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

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

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

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

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

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

《指定値の目安》

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

計算式中の変数の説明に現れるオペランドの値を途中で変更した場合は,このオペランドの値を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 システム導入・設計ガイド」に記載されている「バックエンドサーバが使用する共用メモリの計算式」を参照してください。

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

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

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

  • KFPA20003-E

  • KFPD00005-E

  • KFPD00012-E

  • KFPD00021-E

  • KFPH20003-E

《注意事項》

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

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

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

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

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

〜<符号なし整数>(単位:メガバイト)((6〜4194304))《1024》

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

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

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

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

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

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

  • 64ビットモードの場合

    (1)次の条件をどちらも満たす場合,このオペランドを指定する必要はありません。

     (a)すべてのグローバルバッファの面数(pdbuffer -n)の指定値が次の条件を満たしている。

       ・影響分散スタンバイレス型系切り替え機能を適用しない場合:1620000以下

       ・影響分散スタンバイレス型系切り替え機能を適用する場合:1420000以下

      注※ ホストBES数と受入可能なゲストBESの最大数の合計が6以下である必要があります。

     (b)グローバルバッファプール用共用メモリのサイズが512GB以下

    (2)グローバルバッファプール用共用メモリの管理領域長が1GBより大きいグローバルバッファがある場合,すべてのグローバルバッファで一番大きい管理領域長以上の値を指定してください。

    グローバルバッファプール用共用メモリの管理領域長の計算式については,マニュアル「HiRDB システム導入・設計ガイド」の「グローバルバッファが使用する共用メモリの計算式」を参照してください。

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

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

《オペランドの規則》

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

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

  • グローバルバッファの動的変更を適用している場合,SHMMAXの指定値はHiRDBの再開始時に変更できません。

  • 共用メモリセグメント数は次のオペレーティングシステムパラメタの制限を受けます。

    HP-UXの場合:shmmax,shmmni,及びshmseg

    Linuxの場合:shmmax,shmmni,及びshmall

    このため,グローバルバッファ用の共用メモリセグメントを複数確保する場合,この制限を超えて共用メモリを確保できないことがあります。この場合,次に示す優先順位で対処をしてください。

    1.shmmni及びshmseg(Linuxの場合はshmall)の値を大きくする

    2.shmmaxの値をSHMMAXオペランドの値より大きくする

    3.グローバルバッファプール用の共用メモリのサイズが小さくなるように,グローバルバッファ数を見積もり直す

    OSのオペレーティングシステムパラメタについては,OSのマニュアルを参照してください。また,指定値の見積もりについては,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。

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

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

  • pd_dbbuff_modify

  • pdbuffer

  • pd_max_add_dbbuff_no

  • pd_max_add_dbbuff_shm_no

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

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

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

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

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

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

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

  • 「HP-UXのオペレーティングシステムパラメタの見積もり」

  • 「Linuxのオペレーティングシステムパラメタの見積もり」

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

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