カーネル・パラメーターの変更 (Linux)

root インストールの場合、データベース・マネージャーは公式を利用して、自動的にカーネル・パラメーター設定を調整するので、それらの設定値を手動で更新する必要はありません。

始める前に

カーネル・パラメーターを変更するには、root 権限が必要です。

プロシージャー

Red Hat および SUSE Linux®でカーネル・パラメーターを更新するには、以下のようにします。

  1. ipcs -l コマンドを実行して、現在のカーネル・パラメーター設定をリストします。
  2. コマンド出力を分析して、現行値を以下の表の 強制最小設定 と比較することにより、カーネル設定を変更する必要があるかどうかを判別します。
    IPC カーネル・パラメーター 強制最小設定値
    kernel.shmmni (SHMMNI) 256 * <size of RAM in GB>
    kernel.shmmax (SHMMAX) < RAM のサイズ (バイト)>1
    kernel.shmall (SHMALL) 2 * < デフォルト・システム・ページ・サイズの RAM のサイズ>2
    kernel.sem (SEMMNI) 256 * <size of RAM in GB>
    kernel.sem (SEMMSL) 250
    kernel.sem (SEMMNS) 256,000
    kernel.sem (SEMOPM) 32
    kernel.msgmni (MSGMNI) 1 024 * <size of RAM in GB>
    kernel.msgmax (MSGMAX) 65,536
    kernel.msgmnb (MSGMNB) 65 536 3
    1. 32 ビットの Linux オペレーティング・システムでは、 SHMMAX の強制される最小設定は 4 294 967 295 バイトに制限されます。
    2. SHMALL はシステムに割り振ることができる仮想共有メモリーの合計を制限します。 各 Db2® データ・サーバーは、コミット済みメモリーとも呼ばれる、消費するシステム・メモリーの量を効率的に管理します。 Db2 データ・サーバーは、メモリー事前割り振りと動的メモリー管理をサポートするために、コミットより多くの仮想メモリーを割り振ります。 メモリー事前割り当てはパフォーマンスに寄与します。 動的メモリー管理は、別々の仮想共有メモリー領域の内部で実メモリー使用量を拡張したり縮小したりするプロセスです。 メモリー事前割り当ておよび動的メモリー管理を効率的にサポートするには、データ・サーバーが物理 RAM の総量よりも多くの仮想共有メモリーをシステムに割り当てることが頻繁に必要になります。 カーネルには、ページ数としてこの値が必要になります。
    3. 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
    • 共有メモリー制限の最初のセクションから、 SHMMAX 制限は、 Linux システム上の共有メモリー・セグメントの最大サイズになります。 SHMALL 制限は、システム上の共有メモリー・ページの最大割り振りです。
      • SHMMAX の値は、ご使用のシステム上の物理メモリーの量と同じ値に設定することが推奨されています。 ただし、x86 システムで必要な最小値は 268435456 (256 MB) で、64 ビット・システムの場合は 1073741824 (1 GB) です。
    • 次のセクションは、オペレーティング・システムに使用できるセマフォーの量を示しています。 カーネル・パラメーター sem は、 SEMMSLSEMMNSSEMOPM、および SEMMNIの 4 つのトークンで構成されます。 SEMMNS は、 SEMMSLSEMMNIを乗算した結果です。 データベース・マネージャーでは、必要に応じて配列の数 (SEMMNI) を増やす必要があります。 通常、 SEMMNI は、システム上で予期されるエージェントの最大数の 2 倍に、データベース・サーバー・コンピューター上の論理パーティションの数と、データベース・サーバー・コンピューター上のローカル・アプリケーション接続の数を乗算した値でなければなりません。
    • 3 番目のセクションは、システム上のメッセージを示しています。
      • MSGMNI パラメーターは、開始できるエージェントの数に影響を与えます。 MSGMAX パラメーターは 1 つのキューで送信できるメッセージのサイズに影響を与え、MSGMNB パラメーターはキューのサイズに影響を与えます。
      • MSGMAX パラメーターを 64 KB (65536 バイト) に変更し、 MSGMNB パラメーターを 65536 に増やす必要があります。
  3. /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
  4. -p パラメーターを指定して sysctl を実行し、デフォルト・ファイル /etc/sysctl.confから sysctl 設定をロードします。
       sysctl -p
  5. オプション: リブートのたびに変更が保持されるようにします。
    • (SUSE Linux) boot.sysctl をアクティブにします。
    • (Red Hat) rc.sysinit 初期化スクリプトは、 /etc/sysctl.conf ファイルを自動的に読み取ります。