DB2 10.5 for Linux, UNIX, and Windows

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

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

始める前に

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

手順

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

  1. ipcs -l コマンドを実行して、現在のカーネル・パラメーター設定値をリスト表示します。
  2. このコマンド出力を分析し、現行値を以下の表に示す強制最小設定値 と比較して、カーネル設定値を変更しなければならないかどうかを判別します。
    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
    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
    • まず最初のセクションの Shared Memory Limits で、SHMMAX 制限は Linux システム上の共有メモリー・セグメントの最大サイズです。 SHMALL 制限は、システム上の共有メモリー・ページの最大割り振りです。
      • SHMMAX の値は、ご使用のシステム上の物理メモリーの量と同じ値に設定することが推奨されています。 ただし、x86 システムで必要な最小値は 268435456 (256 MB) で、64 ビット・システムの場合は 1073741824 (1 GB) です。
    • 次のセクションは、オペレーティング・システムに使用できるセマフォーの量を示しています。 カーネル・パラメーター semSEMMSLSEMMNSSEMOPM、および 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. sysctl-p パラメーターを指定して実行し、デフォルトのファイル /etc/sysctl.conf から sysctl 設定をロードします。
       sysctl -p
  5. オプション: 毎回のリブート後に変更内容を保持させるには、次のようにします。
    • (SUSE Linux) boot.sysctl をアクティブにします。
    • (Red Hat) rc.sysinit 初期設定スクリプトは /etc/sysctl.conf ファイルを自動的に読み取ります。