TOP設計・移行・活用> はじめに




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

第5回:カーネルをチューニングする
著者:日本アイ・ビー・エム  田中 裕之、高比良 晋平   2006/6/2
1   2  3  4  次のページ
はじめに

   前回までは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

1   2  3  4  次のページ


日本アイ・ビー・エム  田中 裕之
著者プロフィール
日本アイ・ビー・エム株式会社  田中 裕之
日本アイ・ビー・エム株式会社、Linux アドバンスド・テクニカル・サポート所属
Linuxサポート・センター設立初期よりプロジェクト、案件サポートを実施。現在はソフトウェアとLinuxとの組み合わせでのテストをはじめとする各種検証などを担当。


日本アイ・ビー・エム  高比良 晋平
著者プロフィール
日本アイ・ビー・エム株式会社  高比良 晋平
日本アイ・ビー・エム株式会社、Linux アドバンスド・テクニカル・サポート所属
2003年に入社以来、一貫して先進Linux関連プロジェクトやLinuxビジネスの開発に従事。現在はxSeriesハードウェア・プラットフォームでのLinuxの技術サポートを担当。


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
第5回:カーネルをチューニングする
はじめに
  プロセス間通信(IPC:Inter Process Communication)
  アクセス時間の記録
  メモリ
Linux+DB2のパフォーマンスチューニング
第1回 チューニングの基準
第2回 Linuxの設定情報を取得する
第3回 システムの情報を集める
第4回 システムの統計情報を知る
第5回 カーネルをチューニングする
第6回 DB2の設定情報を取得する(前編)
第7回 DB2の設定情報を取得する(後編)
第8回 DB2をチューニングするツール群
第9回 稼動情報からボトルネックを探し出す
第10回 メモリ管理で安定稼動
第11回 SQLの実行状態をモニタリングせよ