Linux+DB2のパフォーマンスチューニング 5

カーネルをチューニングする

はじめに   前回まではOSでのパフォーマンス情報の項目と取得方法を説明してきました。今回はその項目に関しての具体的なチューニングポイントを説明します。カーネルパラメータの変更方法   Linuxのチューニングの際には「第2回:Linuxの設定情報を取得する」で説明したカーネル内部のパラメータの変

田中 裕之, 高比良 晋平

2006年6月2日 20:00

はじめに

   前回まではOSでのパフォーマンス情報の項目と取得方法を説明してきました。今回はその項目に関しての具体的なチューニングポイントを説明します。


カーネルパラメータの変更方法

   Linuxのチューニングの際には「第2回:Linuxの設定情報を取得する」で説明したカーネル内部のパラメータの変更をする機会が多くあります。はじめにカーネルパラメータの変更方法を説明します。カーネルパラメータの変更にはいくつかの方法があります。

「/proc/sys」ディレクトリ以下に直接値を設定

   カーネルパラメータは「/proc/sys」ディレクトリ以下に設定されています。各項目に直接値を入れることで動的に変更することが可能です。


# echo 512 > /proc/sys/kernel/msgmni
# echo 50 > /proc/sys/vm/swappiness

「sysctl」コマンドを利用して設定

   カーネルパラメータを確認する際に使用した「sysctl」コマンドを使って設定することもできます。


# sysctl -w kernel.msgmni=512
# sysctl -w vm.swappiness=50

   この2種類の方法は一時的な変更だけで、OSを再起動すると設定した値が元に戻ってしまいます。再起動しても常に設定値を反映させるには以下の方法で設定します。

「/etc/sysctl.conf」ファイルに設定

   「/etc/sysctl.conf」はカーネルパラメータを記述する設定ファイルです。このファイルにパラメータを追加し「sysctl -p」を実行するとファイルが読み込まれ値が設定されます。OS起動時には「/etc/rc.sysinit」の処理中に「sysctl -p」が実行されますので、再起動をしても同じ値が設定されることになります。

# vi /etc/sysctl.conf
kernel.msgmni=512
vm.swappiness=50

# sysctl -p      記述した設定値を反映する

   以降の説明では、「/etc/sysctl.conf」に記述することを前提にパラメータ名を示します。

プロセスとファイルディスクリプタ

   システム全体で利用可能なプロセス数とファイルディスクリプタの上限値は、カーネルパラメータで指定しまが、標準でも比較的大きな値となっていますので、この上限にすぐに達することはあまりありません。もし、変更するには以下のパラメータの値を変更します。



パラメータ 設定例 説明
kernel.threads-max 8190 システム全体のプロセス数の上限
fs.file-max 25172 システム全体のファイルディスクリプタの上限
表1:プロセスとファイルディスクリプタのパラメータ

   1ユーザが実行できるプロセス数とオープンできるファイルディスクリプタの上限は標準では1024となっています(「ulimit」コマンドで確認)。

   「これ以上プロセス(スレッド)が作成できない」「オープンできるファイル数の上限に達した」という意味のメッセージがシステムログやアプリケー ションのログファイルに表示される場合は、上限値に達している可能性が高いです。ユーザあたりの上限値を確認してください。

   ユーザあたりの上限はカーネルパラメータでは変更できません。一時的な変更であれば設定を確認するためにも使用する「ulimit」コマンドで可能 ですが、設定値をログイン時に常に有効にするためには、以下の手順に従って「/etc/security/limits.conf」に設定を行います。

「ユーザ:user1」の上限を変更する例

「/etc/security/limits.conf」にユーザ名と上限値を記述します。
[root@localhost ~]# vi /etc/security/limits.conf
user1 soft nofile 49152 ← ファイルディスクリプタのソフトリミット
user1 hard nofile 49152 ← ファイルディスクリプタのハードリミット
user1 soft nproc 4096 ← プロセス数のソフトリミット
user1 hard nproc 4096 ← プロセス数のハードリミット

設定したユーザでログインし「ulimit」コマンドで設定を確認します。
[user1@localhost ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
pending signals                 (-i) 1024
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 49152
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る