Hitachi

ノンストップデータベース HiRDB Version 10 システム導入・設計ガイド(UNIX(R)用)


19.3.1 Linuxのオペレーティングシステムパラメタの指定方法

ここでは,Linuxのオペレーティングシステムパラメタ(カーネルパラメタ)の見積もりについて説明します。オペレーティングシステムパラメタの値が小さいと,HiRDBが正しく動作しないことがあります。Linuxのオペレーティングシステムパラメタの指定値の目安を次の表に示します。

表19‒3 Linuxのオペレーティングシステムパラメタの指定値の目安

オペレーティングシステムパラメタ

指定値の目安

オプション設定ファイル例※1

hard nofile

8192を指定してください。

/etc/security/limits.conf

DefaultLimitNOFILE※2

8192を指定してください。

/etc/systemd/system.conf

soft nofile

HiRDBが計算して設定するため,指定する必要はありません。

fs.aio-max-nr

次のどちらかの機能を使用する場合は(pd_max_server_process × 2)以上を指定してください。

  • システムログI/Oの並列化機能

  • 複製ディスク機能

このマシンに複数のHiRDB環境がある場合,HiRDBごとに計算して合計してください。

なお,この計算式で求めた値がパラメタのデフォルト値よりも小さいときはパラメタ値を変更する必要はありません。

/proc/sys/fs/aio-max-nr

fs.file-max

MAX{1600,320×(h−g−i)+[a+(b×c)+320]×g+848×i+h×2+227+k×m+C}

上記の計算式に,次の計算式を加えて求めた値以上を指定してください。

●HiRDB/シングルサーバの場合

pd_max_users+pd_max_reflect_process_countの値

●HiRDB/パラレルサーバの場合

(D+3×ユニット内サーバ数)×E

D:ユニット内のサーバごとに次の計算式を実行して求めた値を合計してください。

 バックエンドサーバの場合

 pd_max_bes_process+pd_max_reflect_process_countの値

 ディクショナリサーバの場合

 pd_max_dic_process+pd_max_reflect_process_countの値

 pd_max_bes_process又はpd_max_dic_processオペランドを省略している場合はpd_max_usersの値で計算してください。

 ユニット内に複数のバックエンドサーバがある場合は,バックエンドサーバごとに計算してください。

E:16(排他待ちスレッド数)

この計算式で求めた値が,システムの上限を超える場合は,システムの上限値を指定してください。

/proc/sys/fs/file-max

nproc

MAX(pd_max_server_processの値+e,512)以上を指定してください。

ただし,サーバマシン上で稼働するほかのプログラムが必要とする値の方が大きい場合は,その値を指定してください。

/etc/security/limits.conf

DefaultLimitNPROC※2

MAX(pd_max_server_processの値+e,512)以上を指定してください。

ただし,サーバマシン上で稼働するほかのプログラムが必要とする値の方が大きい場合は,その値を指定してください。

/etc/systemd/system.conf

threads-max

MAX((pd_max_server_processの値+20),576)以上を指定してください。

/proc/sys/kernel/threads-max

msgmnb

HP-UXのオペレーティングシステムパラメタの見積もり」の「●msgmnbの計算式」を参照してください。ここで求めた値以上を指定してください。ただし,マルチHiRDBの場合は,それらのHiRDBごとに求めた値の中で最大の値を指定してください。

/proc/sys/kernel/msgmnb

msgmni

サーバマシン上で稼働する全プログラムが必要とするメッセージキュー識別子数を指定します。HiRDBが必要とするメッセージキュー識別子数については,「メッセージキュー及びセマフォ所要量の見積もり」を参照してください。そこで求めた値を加算してください。

/proc/sys/kernel/msgmni

SEMMNI

サーバマシン上で稼働する全プログラムが必要とするセマフォ識別子数を指定します。HiRDBが必要とするセマフォ識別子数については,「メッセージキュー及びセマフォ所要量の見積もり」を参照してください。そこで求めた値を加算してください。

推奨値は1024以上です。

/proc/sys/kernel/semの第4パラメタ

SEMMNS

サーバマシン上で稼働する全プログラムが必要とするセマフォ数を指定します。HiRDBが必要とするセマフォ数については,「メッセージキュー及びセマフォ所要量の見積もり」を参照してください。そこで求めた値を加算してください。

推奨値は7200以上です。

/proc/sys/kernel/semの第2パラメタ

SEMMSL

サーバマシン上で稼働する全プログラムが必要とするセマフォ数を指定します。HiRDBが必要とするセマフォ数については,Max(250,pd_dfw_awt_processオペランド指定値)以上の値を指定してください。

/proc/sys/kernel/semの第1パラメタ

shmmax

200000000以上で,MAX(p+q,r,s,t)よりも大きい値を指定してください。グローバルバッファの動的変更機能使用時は,追加するグローバルバッファのサイズを考慮し,設定値より追加分のサイズが大きくなる可能性があれば,予想される追加分のサイズを指定してください。

なお,HiRDBシステム定義のSHMMAXオペランドには,ここで求めたshmmaxの値以下を指定してください。

/proc/sys/kernel/shmmax

shmmni

2000以上を指定してください。

  • セキュリティ監査機能使用時は1を加算してください。

  • グローバルバッファの動的変更機能使用時は次の値を加算します。セキュリティ監査機能使用時は1を加算してください。

    HiRDB/シングルサーバの場合

    pd_max_add_dbbuff_shm_noオペランドの値

    HiRDB/パラレルサーバの場合

    n

    Σ各サーバ定義に指定したpd_max_add_dbbuff_shm_noオペランドの値

    i=1

    n:サーバマシン内のバックエンドサーバ数+ディクショナリサーバ数

  • インメモリデータ処理の使用時は次の値を加算します。

    HiRDB/シングルサーバの場合

    pd_max_resident_rdarea_shm_noオペランドの値

    HiRDB/パラレルサーバの場合

    pd_max_resident_rdarea_shm_noオペランドの値×バックエンドサーバ数

/proc/sys/kernel/shmmni

SHMALL

該当するサーバマシンでHiRDBが確保する共用メモリsiに,同一サーバマシンで稼働するほかのプログラムの共用メモリの所要量を加算して指定してください。

/proc/sys/kernel/shmall

(凡例) −:該当しません。

注※1

使用しているOSのバージョン,及びカーネルのバージョンごとに異なります。使用しているOSのマニュアルを参照し,表中の指定値の目安で示した値を設定してください。なお,使用しているOSのバージョンによっては,設定が不要になります。使用しているOSで該当するカーネルパラメタが設定できない場合には,設定は不要です。

注※2

Red Hat Enterprise Linux(R) 7以降で指定してください。

a:データベース作成ユティリティで使用する入力データファイル数と分割入力データファイル数,又はデータベース再編成ユティリティで使用するアンロードデータファイル数

b:インデクスの横分割数の最大値(データベース作成ユティリティ,データベース再編成ユティリティ,又はリバランスユティリティの処理対象のインデクス)

c:インデクス数(データベース作成ユティリティ,データベース再編成ユティリティ,又はリバランスユティリティの処理対象のインデクス)

e:同時実行するコマンド(ユティリティを含む)の最大数

g:次のどちらかの値
  • HiRDB/シングルサーバの場合:pd_max_usersオペランドの値+pd_max_reflect_process_countオペランドの値

  • HiRDB/パラレルサーバの場合:ユニット内の全バックエンドサーバ,ディクショナリサーバの次に示す値の合計値

    pd_max_bes_processオペランドの値+pd_max_reflect_process_countオペランドの値

    pd_max_dic_processオペランドの値+pd_max_reflect_process_countオペランドの値

h:pd_max_server_processオペランドの値

i:ユニット内のサーバ数

k:次のどちらかの値
  • HiRDB/パラレルサーバでユニット内にフロントエンドサーバがある場合:pd_max_usersオペランドの値+pd_max_reflect_process_countオペランドの値

  • そのほかの場合:0

m:次のどちらかの値
  • HiRDB/パラレルサーバでユニット内にフロントエンドサーバがある場合:2

  • そのほかの場合:0

n:データベース作成ユティリティ,データベース再編成ユティリティ,又はリバランスユティリティで,インデクス作成方法にインデクス一括作成モード若しくはインデクス情報出力モードを指定する場合,次の計算式の値

MIN(MAX(576,システム内のHiRDBサーバ数+448)+b×c,pd_max_open_fdsオペランドの最大値)

pd_max_open_fdsオペランドの最大値については,マニュアル「HiRDB システム定義」を参照してください。

p:ユニットコントローラが使用する共用メモリの大きさ

q:シングルサーバ又は各サーバが使用する共用メモリの大きさ

r:HiRDBシステム定義のSHMMAXオペランドの指定値

s:グローバルバッファが使用する共用メモリの見積もり値

グローバルバッファが使用する共用メモリの見積もりについては,HiRDB/シングルサーバの場合は「グローバルバッファが使用する共用メモリの計算式」を,HiRDB/パラレルサーバの場合は「グローバルバッファが使用する共用メモリの計算式」を参照してください。

si:該当するサーバマシンでHiRDBが確保する共用メモリ
:セキュリティ監査情報用バッファ用共用メモリの見積もり値

セキュリティ監査情報用バッファ用共用メモリの見積もりについては,HiRDB/シングルサーバの場合は「メモリ所要量の計算式」を,HiRDB/パラレルサーバの場合は「メモリ所要量の計算式」を参照してください。

MAX(256,(システム内HiRDBサーバ数+128))×(g+k)+(h−g−k)×MAX(システム内HiRDBサーバ数,ユニット数)

注意事項

TCPポートがTIME_WAIT状態となり,システム全体のTCPポートが不足し,トランザクションがエラーとなったり,HiRDBが異常終了したりすることがあります。このような現象が発生した場合,オペレーティングシステムパラメタの設定によって,ポート数不足の発生を回避してください。詳細については,「ポート数不足を回避する方法」を参照してください。

〈この項の構成〉

(1) Linux固有の指定

Linux版の場合,拡張されたインターネットサービスデーモン(以降,xinetdと表記)が起動していると,その設定ファイルであるxinetd.confなどで設定している値の調整が必要となります。

また,Red Hat Enterprise Linux(R) 7でHiRDBがリモートシェル実行やファイル転送に使用するコマンドにリモートシェルを選択(システム定義pd_cmd_rmode=rshを指定,又は指定を省略)し,systemdのsocketユニットを構成してリモートシェルを使用する場合は,リモートシェルのsocketユニット構成ファイルに設定しているパラメタの調整が必要です。

それぞれのパラメタの指定値の目安を次の表に示します。

表19‒4 リモートシェルに関するLinux固有の指定値の目安

パラメタ

指定値の目安

オプション設定ファイル例※1

cps

(1秒当たりに処理する接続数)

1番目の引数に,次の値を指定してください。

HiRDB/シングルサーバの場合:

ユティリティ専用ユニットがないとき:A

ユティリティ専用ユニットがあるとき:MAX(A,B)

HiRDB/パラレルサーバの場合:

MAX(C,(D+E1+E2))

なお,計算した値がパラメタのデフォルト値よりも小さい場合は,パラメタ値を変更する必要はありません。

/etc/xinetd.conf

instances

(サービスの同時実行最大値)

cpsパラメタで計算した値の2倍を指定してください。

なお,計算した値がパラメタのデフォルト値よりも小さい場合は,パラメタ値を変更する必要はありません。

/etc/xinetd.conf

MaxConnections※2

(サービスの最大値)

cpsパラメタで計算した値の2倍を指定してください。

なお,計算した値がパラメタのデフォルト値よりも小さい場合は,パラメタ値を変更する必要はありません。

/etc/systemd/system/sockets.target.wants/rsh.socket

注※1

使用しているOSのバージョン,及びカーネルのバージョンごとに異なります。xinetd.conf及び.socketファイルについては,OSのマニュアルを参照してください。

注※2

Red Hat Enterprise Linux(R) 7でHiRDBがリモートシェル実行やファイル転送に使用するコマンドにリモートシェルを選択(システム定義pd_cmd_rmode=rshを指定,又は指定を省略)し,systemdのsocketユニットを構成してリモートシェルを使用する場合,[Socket]セクションに指定してください。

:該当するマシンで起動するシングルサーバ数×4

:pdcopy及びpdrstrの最大同時実行数×2

:該当するマシンで起動するディクショナリサーバ数

×HiRDBシステムに定義した全バックエンドサーバ数×6

+該当するマシンで起動するディクショナリサーバ数

×HiRDBシステムに定義した全バックエンドサーバ数×2

+該当するマシンで起動するバックエンドサーバ数×7

+該当するマシンで起動するディクショナリサーバ数×4

:pdcopy及びpdrstrの最大同時実行数

×(HiRDBシステムに定義したバックエンドサーバ数+4)

1:同時に実行する運用コマンド及びユティリティの数×3

2:pdtrndecコマンドを実行する運用の場合は次の合計値,pdtrndecコマンドを実行しない運用の場合は0

該当するマシンにFESが存在する場合はpd_max_usersの値

該当するマシンにBESが存在する場合はpd_max_bes_processの値

該当するマシンにDSが存在する場合はpd_max_dic_processの値

(2) LinuxのHugepage機能の指定

Linux版のHiRDBでは,LinuxのHugepage機能を用いて,共用メモリを実メモリ上に固定できます。詳細については,HiRDB/シングルサーバの場合は「Hugepage機能を用いた共用メモリの固定」を,HiRDB/パラレルサーバの場合は「Hugepage機能を用いた共用メモリの固定」を参照してください。ここでは,LinuxのHugepage機能を有効にするときに指定するLinuxのオペレーティングシステムパラメタと,指定値の見積もり方法について説明します。

(a) Hugepage機能を有効にするときに指定するオペレーティングシステムパラメタ

Linuxのオペレーティングシステムパラメタの指定値の目安を次の表に示します。

表19‒5 Hugepage機能適用時のオペレーティングシステムパラメタ指定値の目安

オペレーティングシステムパラメタ

指定値の目安

オプション設定ファイル例

vm.nr_hugepages

下記「HiRDBが使用するhugepagesの最大ページ数の求め方」を参照して求めた値を指定してください。既に値が指定されていた場合は,既定値に求めた値を加算してください。

/etc/sysctl.conf

vm.hugetlb_shm_group

HiRDB管理者のグループIDを指定してください。

/etc/sysctl.conf

soft memlock

HiRDB管理者のユーザIDを対象とし,unlimitedを指定してください。

/etc/security/limits.conf

hard memlock

HiRDB管理者のユーザIDを対象とし,unlimitedを指定してください。

/etc/security/limits.conf

注※ 使用しているOSのバージョン,及びカーネルのバージョンごとに異なります。使用しているOSのマニュアルを参照し,表中の指定値で示した値を指定してください。

(b) HiRDBが使用するhugepagesの最大ページ数の求め方

次に示す方法で算出してください。

(i)この機能を適用しないでHiRDBを開始します。

(ii)HiRDBの開始完了後,pdls -d memコマンドを実行して,ユニットコントローラ用共用メモリと各グローバルバッファ用共用メモリの個々のサイズを確認します。
  • ユニットコントローラ用共用メモリのサイズ:

    pdls -d memコマンドで表示されるSHM-OWNERの値が,MANAGERである共用メモリのACT-SIZEの値

  • 各グローバルバッファ用共用メモリの個々のサイズ:

    pdls -d memコマンドで表示されるSHM-OWNERの値が,次に示す文字列である共用メモリのACT-SIZEの値

  • 影響分散スタンバイレス型系切り替え機能を適用するユニットの場合:

    ユニット名を()で囲んだ文字列

  • 影響分散スタンバイレス型系切り替え機能を適用しないユニットの場合:

    サーバ名

(iii)次に示す計算式を用いて,HiRDBが使用するhugepagesの最大ページ数を求めます。サーバマシン内にこの機能を適用するHiRDBシステムを複数構成している場合,各システムで値を算出し,その合計値を用いて計算してください。
HiRDBが使用するhugepagesの最大ページ数 = A+B+C+D

A…ユニットコントローラ用共用メモリが使用するhugepagesの最大ページ数

  • ユニットコントローラ用共用メモリにこの機能を適用する場合:

    ↑(ii)で求めたユニットコントローラ用共用メモリのサイズ÷ 2000000↑

  • ユニットコントローラ用共用メモリにこの機能を適用しない場合:0

B…グローバルバッファ用共用メモリが使用するhugepagesの最大ページ数

  • グローバルバッファ用共用メモリにこの機能を適用する場合:

    n

    Σ(↑(ii)で求めたグローバルバッファ用共用メモリのサイズ÷ 2000000↑)

    i=1

    n:(ii)で求めたグローバルバッファ用共用メモリの数

  • グローバルバッファ用共用メモリにこの機能を適用しない場合:0

C…グローバルバッファの動的変更で確保するグローバルバッファ用共用メモリが使用するhugepagesの最大ページ数

  • グローバルバッファの動的変更で確保するグローバルバッファ用共用メモリにこの機能を適用する場合:

    システム共通定義のpd_max_add_dbbuff_shm_noオペランドの値

    × ↑システム共通定義のSHMMAXオペランドの値 ÷ 2 ↑

  • グローバルバッファの動的変更で確保するグローバルバッファ用共用メモリにこの機能を適用しない場合:0

D…インメモリデータバッファが使用する共用メモリが使用するhugepagesの最大ページ数

  • インメモリデータバッファが使用する共用メモリにこの機能を適用する場合:

    システム共通定義のpd_max_resident_rdarea_shm_noオペランドの値

    × ↑ システム共通定義のSHMMAXオペランドの値 ÷ 2 ↑

  • インメモリデータバッファが使用する共用メモリにこの機能を適用しない場合:0