/procによるLinuxチューニング [後編]
〜 /proc/sysの主要パラメータ群総解説 〜

/proc/sys配下には、OSのチューニングパラメータが集まっている。ここにあるファイルやパラメータを理解することで、OSを特殊環境などに適応させることができる。(編集局)


遠田 耕平
2002/12/17

 前編では、システム全体の情報表示関連の/procパラメータを解説しました。後編では、個別のチューニングパラメータを見ていきましょう。

 チューニングパラメータは/proc/sys配下に集まっており、大きく分けると、

  /proc/sys /kernel
    /fs
    /vm
    /net

の4つがあります。kernel配下にはカーネル全般にかかわるパラメータ、fs配下にはファイルシステム関連のパラメータ、vm配下には仮想記憶関連のパラメータ、net配下にはネットワーク関連のパラメータが置かれています。

/proc/sys/kernelディレクトリ

 まずはkernel配下のパラメータを見ていきましょう。/proc/sys/kernel配下のパラメータを使うと、パフォーマンス・チューニング以外のさまざまな設定も可能です。

ctrl-alt-del、cad_pid
 ctrl-alt-delは、おなじみの[Ctrl]+[Alt]+[Del]キーシーケンスの有効(1)/無効(0)を設定するファイルです。同時に、cad_pidには[Ctrl]+[Alt]+[Del]キーを押した際にシグナルを送信するプロセスを指定します()。

注:シグナル送信先プロセスは、通常は「1」です。これはinitプロセスという意味ですが、特殊な用途ではctrl-alt-delを別のプロセスに受けさせることができると便利かもしれません。

domainname、hostname
 これらのファイルには、そのシステムのドメイン名、ホスト名を設定することができます(setdomainname(2)、getdomainname(2)、sethostname(2)、gethostname(2)によっても参照/設定されます)。

panic
 このファイルに「0」より大きい値を指定しておくと、システムはパニック時にその秒数だけ待ってから自動的にリブートします。

osrelease、ostype、version
 それぞれ、カーネルバージョン(2.4.19など)、OS名(Linux)、バージョン(カーネルビルドの日付など)を表示します。

sysrq
 マジックSysRqキーの有効(1)/無効(0)を設定します。マジックSysRqキーとは、システムが異常な状態になった場合でも使えるように配慮された、緊急操作用のキーシーケンスです。

printk
 printkの出力レベルを指定します。printkはカーネル内でのロギング(情報出力)のために使用しますが、その情報量を制御できます。4つの数値を指定することができ、それぞれ、

  • 現在のコンソールログレベル
    このレベルより小さい(優先度の高い)レベルのメッセージが表示される
  • デフォルトのログレベル
    printk時に特に指定がなかったときのログレベル
  • 最低コンソールログレベル
    ロギングをオフにしたときのログレベル
  • デフォルトコンソールログレベル
    ロギングをオンにしたときのログレベル

を指定します。

core_uses_pid
 コアダンプ作成時に、「core.1234」のようにPID付きの形式を使用するかどうかを指定します。coreファイルの区別が簡単になると同時に、マルチスレッド、マルチプロセスのプログラムをデバッグする際に、古いcoreが上書きされないという利点があります

modprobe、hotplug
 カーネルには、ローダブルモジュールを自動的にロードする機能があります。この「自動ロード」は、カーネルが「モジュールをロードするユーザーランドのプログラム」を起動することによって実現されています。modprobeにはその実行形式(プログラム)を指定します。通常は、「/sbin/modprobe」になっています。

 hotplugも同様の意味合いになりますが、ここで指定されたプログラムはホットプラグデバイス(PCMCIAなど)の挿抜の際にホットプラグ関連処理を行うためのユーザーランドのプログラムとなります(通常は/sbin/hotplug)。

 次のshm*、sem、msgmaxは、いずれもSysV IPCと呼ばれる一群のIPC(プロセス間通信)のパラメータです。

 SysV IPCはその名のとおり、System V(AT&T系UNIX)で導入されたプロセス間通信機構です。一般には、SysV IPCは「古めかしい」インターフェイスと考えられています。SysV IPCでプロセス間通信をするよりはスレッドなどを活用する方が現代的なのですが、依然として各種のアプリケーションで使用されています。

 SysV IPCはipcsコマンドで使用状態を調べることができるので、自分のシステムやアプリケーションでどの程度使用されているか調べておくのがよいでしょう。

shmall、shmmni、shmmax
 共有メモリ(シェアードメモリ)のパラメータです。shmallはシステム全体の共有メモリの大きさ、shmmaxは1プロセスごとの大きさ、shmmniは1プロセスごとの共有メモリセグメント(領域)の数の上限を規定します。

 共有メモリを利用する構造になっているアプリケーション(データベースなど)によっては、この値を大きく取っておかないとうまく動作しないものもあります。

sem
 semは4つの値を取り、セマフォidごとのセマフォの数、システム全体のセマフォの数、一度に実施できるセマフォ操作の数、セマフォidの最大値を指定できます。

msgmax、msgmni、msgmnb
 それぞれ、送信可能なメッセージの最大長、メッセージキューidの最大値、メッセージキューの大きさを指定できます。

threads-max
 システム全体のスレッド(プロセス)の最大数です。これを超えるスレッド(プロセス)は生成できなくなるので、システムに合わせて十分大きな値を設定しておく必要があります。

前編へ
1/4

Index
/procによるLinuxチューニング [後編]
 〜 /proc/sysの主要パラメータ群総解説 〜
Page 1
/proc/sys/kernelディレクトリ
  Page 2
/proc/sys/fsディレクトリ
/proc/sys/vmディレクトリ
/proc/sys/netディレクトリ
  Page 3
チューニングの実例
 ファイルI/Oのチューニング
 ネットワークのチューニング
  Page 4
Appendix
 パラメータ/デフォルト値一覧表

Linux Square全記事インデックス


 Linux Squareフォーラム Linuxカーネル関連記事
連載:Linux Kernel Watch(連載中)
Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします
連載:Linuxファイルシステム技術解説
ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する
特集:全貌を現したLinuxカーネル2.6[第1章]
エンタープライズ向けに刷新されたカーネル・コア
ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する
特集:/procによるLinuxチューニング[前編]
/procで理解するOSの状態

Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する
特集:仮想OS「User Mode Linux」活用法
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説
Linuxのカーネルメンテナは柔軟なシステム
カーネルメンテナが語るコミュニティとIA-64 Linux
IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間