LinuxでのKernelパラメータ値の設定
これはInterSystems FAQ サイトの記事です。
一部のKernelパラメータはInterSystems製品を稼働するためには、不適切な値となっているため、調整する必要があります。
shmmax (共有メモリセグメントの最大値)
共有メモリにあわせたshmmaxの値は以下の a)、b)、c)、d)の合計値になります。
a) データベースバッファ(Mbytes)
b) ルーチンバッファ(Mbytes)
c) 一般メモリヒープ(Kbytes)
d) バッファ等の管理ための領域 18 (Mbytes) + (データベースバッファ(Mbytes) +ルーチンバッファ(Mbytes)) x 0.05 (Mbytes)
shmall (総共有メモリサイズ) システムで使用する共有メモリの合計サイズになります。
単位はページ(4Kbytes)です。
この値は少なくとも使用する共有メモリサイズ以上にする必要があります。
shmmni (共有メモリセグメント数) 通常既定値で問題ありません。
使用するセグメント数は1つです。
(データベースバッファ、ルーチンバッファ、一般メモリヒープは1つの共有メモリセグメントに配置されます)
ただし、管理ポータル用のApache にてセグメントを1つ使用します。
このため、管理ポータル用Apache起動が有効な場合、1インスタンス当り使用するセグメント数は2になります。
semmni、semmsl、 semmns (セマフォ数)
通常既定値で問題ありません。
プロセステーブルのエントリ数と同数のセマフォを使用します。
プロセステーブルのエントリ数は必要に応じて自動拡張し、初期値の128から32個単位で自動拡張しますが、その際にセマフォも同じ数使用します。
よって、セマフォのKernelパラメータの設定値の算出のためには、最大プロセス数(デーモンプロセスも含む)を見積もる必要があります。
semmns = 最大プロセス数(32の倍数) + その他InterSystems製品以外で使用するセマフォ数
semmni × semmsl > semmnsになるようsemmniとsemmslの値を設定します。
通常semmslは既定値を使用し semmniの値を変更します。
※semmni:システム全体のセマフォ集合の最大数。方針依存 。
(Linuxではこの制限値は /proc/sys/kernel/sem の第4フィールドに対応し、読み出しも変更もできる。)
※semmsl:semidあたりのセマフォの最大数。 実装依存。
(Linuxではこの制限値は /proc/sys/kernel/sem の第1フィールドに対応し、読み出しも変更もできる。)
※semmns:システム全体のセマフォの最大数。
方針依存。
(Linuxではこの制限値は /proc/sys/kernel/sem の第2フィールドに対応し、読み出しも変更もできる。)
semmsl × semmniより大きな値は意味を持たない。