設定パラメータとカーネルパラメータとの関係および計算式は、“PostgreSQL文書”の“カーネルリソースの管理”の表“System V IPCパラメータ”を使用してください。
また、共有メモリの使用量の計算には、“PostgreSQL文書”の“カーネルリソースの管理”の表“PostgreSQLの共有メモリ使用量”を参照してください。
インスタンスが複数ある場合は、すべてのインスタンスについてカーネルパラメータの評価を実施してください。例えば、システム全体の共有メモリセグメントの最大値(SHMMNI)であれば、すべてのインスタンスで求めた個数の合計値をカーネルパラメータに加算します。プロセス毎のセマフォの最大数(SEMMSL)であれば、すべてのインスタンスで求めたサイズのうちの最も大きい値と現在の値とを比較してから設定します。
注意
表“PostgreSQLの共有メモリ使用量”の“共有ディスクバッファ”の“shared_buffers”の単位は、ブロック数です。もし、postgresql.confにバイト数で指定しているならば、その値をもって、この計算式と置き換えてください。
SHMMAXの計算誤りにより共有メモリが不足した場合には、shmgetシステムコールが“errno=22 (EINVAL)”で失敗したことを示すメッセージが出力されます。計算をやり直して、再設定してください。
System V IPC パラメータと各オペレーティングシステムのカーネルパラメータとの関係は以下のとおりです。
System | V IPC パラメータ | カーネルパラメータアクション |
---|---|---|
SHMMAX | kernel.shmmax | “現在値 < 計算値”ならば、計算値を設定 |
SHMMIN | 対応するパラメータなし |
|
SHMALL | kernel.shmall | “現在値 + 計算値”を指定 |
SHMSEG | 対応するパラメータなし |
|
SHMMNI | kernel.shmmni | “現在値 + 計算値”を指定 |
SEMMNI | kernel.semの第4パラメータ | “現在値 + 計算値”を指定 |
SEMMNS | kernel.semの第2パラメータ | “現在値 + 計算値”を指定 |
SEMMSL | kernel.semの第1パラメータ | “現在値 < 計算値”ならば、計算値を設定 |
SEMMAP | 対応するパラメータなし |
|
SEMVMX | 対応するパラメータなし |
|
備考1. kernel.shmallは、ページ指定です。
備考2. kernel.sem は、4個のパラメータを一度に指定します。このとき、第3パラメータには、設定前の値をそのまま指定してください。