root インストールの場合、データベース・マネージャーは公式を利用して、自動的にカーネル・パラメーター設定を調整するので、それらの設定値を手動で更新する必要はありません。
始める前に
カーネル・パラメーターを変更するには、root 権限が必要です。
手順
Red Hat および SUSE Linux 上でカーネル・パラメーターを更新するには、次のようにします。
- ipcs -l コマンドを実行して、現在のカーネル・パラメーター設定値をリスト表示します。
- このコマンド出力を分析し、現行値を以下の表に示す強制最小設定値 と比較して、カーネル設定値を変更しなければならないかどうかを判別します。
IPC カーネル・パラメーター |
強制最小設定値 |
kernel.shmmni (SHMMNI) |
256 * <GB 単位の RAM サイズ> |
kernel.shmmax (SHMMAX) |
<バイト単位の RAM サイズ>1 |
kernel.shmall (SHMALL) |
2* <デフォルトのシステム・ページ・サイズ単位の RAM サイズ>2 |
kernel.sem (SEMMNI) |
256 * <GB 単位の RAM サイズ> |
kernel.sem (SEMMSL) |
250 |
kernel.sem (SEMMNS) |
256,000 |
kernel.sem (SEMOPM) |
32 |
kernel.msgmni (MSGMNI) |
1,024 * <GB 単位の RAM サイズ> |
kernel.msgmax (MSGMAX) |
65,536 |
kernel.msgmnb (MSGMNB) |
65 536 3 |
- 32 ビットの Linux オペレーティング・システムでは、SHMMAX の強制最小設定値は 4 294 967 295 バイト に制限されます。
- SHMALL はシステムに割り振ることができる仮想共有メモリーの合計を制限します。 各 DB2® データ・サーバーは、それぞれが消費するシステム・メモリー (コミット・メモリーとも呼ばれる) の量を効率的に管理します。 DB2 データ・サーバーは、コミットされるよりも多くの仮想メモリーを割り当てて、メモリー事前割り当ておよび動的メモリー管理をサポートします。 メモリー事前割り当てはパフォーマンスに寄与します。 動的メモリー管理は、別々の仮想共有メモリー領域の内部で実メモリー使用量を拡張したり縮小したりするプロセスです。 メモリー事前割り当ておよび動的メモリー管理を効率的にサポートするには、データ・サーバーが物理 RAM の総量よりも多くの仮想共有メモリーをシステムに割り当てることが頻繁に必要になります。 カーネルには、ページ数としてこの値が必要になります。
- MSGMNB にバイト数で指定されるメッセージ・キュー・サイズ限度を大きくすると、ロード・パフォーマンスが向上する可能性があります。 ipcs -q コマンドを実行して、メッセージ・キューの使用量を表示することができます。
ロード操作の間にメッセージ・キューが容量限界に達した場合、または容量限界に到達しそうな場合は、メッセージ・キュー・サイズ限度のバイト数を増やすことを考慮してください。
|
以下のテキストは、ipcs コマンドの出力例で、// の後に追加されているコメントはパラメーター名を示しています。
# ipcs -l
------ Shared Memory Limits --------
max number of segments = 4096 // SHMMNI
max seg size (kbytes) = 32768 // SHMMAX
max total shared memory (kbytes) = 8388608 // SHMALL
min seg size (bytes) = 1
------ Semaphore Limits --------
max number of arrays = 1024 // SEMMNI
max semaphores per array = 250 // SEMMSL
max semaphores system wide = 256000 // SEMMNS
max ops per semop call = 32 // SEMOPM
semaphore max value = 32767
------ Messages: Limits --------
max queues system wide = 1024 // MSGMNI
max size of message (bytes) = 65536 // MSGMAX
default max size of queue (bytes) = 65536 // MSGMNB
- まず最初のセクションの Shared Memory Limits で、SHMMAX 制限は Linux システム上の共有メモリー・セグメントの最大サイズです。 SHMALL 制限は、システム上の共有メモリー・ページの最大割り振りです。
- SHMMAX の値は、ご使用のシステム上の物理メモリーの量と同じ値に設定することが推奨されています。 ただし、x86 システムで必要な最小値は 268435456 (256 MB) で、64 ビット・システムの場合は 1073741824 (1 GB) です。
- 次のセクションは、オペレーティング・システムに使用できるセマフォーの量を示しています。 カーネル・パラメーター sem は SEMMSL、SEMMNS、SEMOPM、および SEMMNI の 4 つのトークンで構成されています。
SEMMNS は、SEMMSL と SEMMNI を乗算した結果です。 必要に応じて、データベース・マネージャー用に配列の数 (SEMMNI) を増やす必要があります。 通常、SEMMNI は、システム上で予期されるエージェントの最大数の 2 倍にデータベース・サーバー・コンピューター上の論理パーティション数を乗算し、さらにデータベース・サーバー・コンピューター上のローカル・アプリケーション接続数を加えた数値にする必要があります。
- 3 番目のセクションは、システム上のメッセージを示しています。
- MSGMNI パラメーターは開始できるエージェントの数に作用し、MSGMAX パラメーターは 1 つのキューで送信できるメッセージのサイズに作用し、MSGMNB パラメーターはキューのサイズに作用します。
- MSGMAX パラメーターを 64 KB (65536 バイト) に変更する必要があり、MSGMNB パラメーターを 65536 に増やす必要もあります。
- /etc/sysctl.conf ファイルを編集して、調整が必要なカーネル・パラメーターを変更します。
このファイルが存在しない場合は、作成してください。 このファイルに含める必要のある行の例を以下に示します。
#Example for a computer with 16GB of RAM:
kernel.shmmni=4096
kernel.shmmax=17179869184
kernel.shmall=8388608
#kernel.sem=<SEMMSL> <SEMMNS> <SEMOPM> <SEMMNI>
kernel.sem=250 1024000 32 4096
kernel.msgmni=16384
kernel.msgmax=65536
kernel.msgmnb=65536
- sysctl を -p パラメーターを指定して実行し、デフォルトのファイル /etc/sysctl.conf から sysctl 設定をロードします。
sysctl -p
- オプション: 毎回のリブート後に変更内容を保持させるには、次のようにします。
- (SUSE Linux) boot.sysctl をアクティブにします。
- (Red Hat) rc.sysinit 初期設定スクリプトは /etc/sysctl.conf ファイルを自動的に読み取ります。