hajichan.net technical version
トップページ >> サーバ管理(Solaris) >> カーネルパラメータの設定

サーバ管理

カーネルパラメータの設定

カーネルパラメータの設定変更は、/etc/systemファイルで行います。Solarisのカーネルパラメータはデフォルトでそこそこ適当な値に設定されているはずなので、余程の理由がなければ、設定を変える必要は無いと思います。

もし変更する際は、慎重に行った方がいいと思います。確か、SUNやベンダーのサポート範囲外の内容ですので。

ここではカーネルパラメータ変更について、知っていることをメモる程度に書きたいと思います。

簡易マニュアルを見るには

# man -s 4 system

カーネルパラメータを変更するには

カーネルパラメータを変更するには、/etc/systemファイルに変更を加え、再起動します。再起動しないと有効になりません。例として、maxusersパラメータを256に変更してみます。

# vi /etc/system
---
set maxusers=256

# init 6

動的にカーネルパラメータを変更するには

あまり推奨しませんが、adbコマンド(Solaris8以降ではmdbコマンド)で直接メモリ上のカーネルパラメータを変更すれば、再起動をしなくてもカーネルパラメータを変更することができ、 そのままカーネルに反映されます。但し、再起動後は設定値はクリアされてしまうので、恒久的に設定したい場合は、/etc/systemファイルへの修正も忘れないで下さい。

例として、maxusersパラメータを256に変更してみます。

# adb -wk /dev/ksyms /dev/mem
---
physmem 3b3f
maxusers/W 100   // パラメータ/W 値(16進数)で指定
maxusers:       0x76            =       0x100
maxusers/D   // 確認
maxusers:
maxusers:       256   // 256に変更された
^D   // Ctrl+Dで抜ける

カーネルパラメータを確認するには

現在のカーネルパラメータを確認するには、sysdefコマンドやら、adbコマンド(Solaris8以降ではmdbコマンド)やらを使用します。

# adb -k /dev/ksyms /dev/mem
---
physmem 3b3f
maxusers/D   // パラメータ/Dで指定。Dは10進数表示の意味
maxusers:       118
^D   // Ctrl+Dで抜ける

又は、sysdefコマンドで確認します。但し、どのパラメータが何を指名してるのか分からないと使えません。

# sysdef -i

/etc/systemを変更して、起動できなくなってしまったら・・・

/etc/systemファイルの記述ミスなどで、万が一システムが起動しなくなってしまったら、以下の方法で対応するといいと思います。

対応策1

CD-ROM(boot -s cdrom)から起動して、/etcを一時的にマウントし、/etc/systemを修正。

対応策2

対話モード(boot -a)で起動して、デフォルトのカーネルパラメータファイルの指定の箇所(/etc/system)で/dev/nullや、バックアップを取っておいた正常な/etc/systemを指定してとりあえず起動し、その後/etc/systemを修正。

各種カーネルパラメータ

分かる範囲で、各種カーネルパラメータについて書こうと思います(よく使われていそうなものしか分かりませんが)。カーネルチューニングに関してもっと詳しく知りたい方は、以下のサイトを参照下さい。とても参考になると思います。興味のある方はどうぞ。

Solarisカーネルのチューンアップ・リファレンスマニュアル
Tips & Technique for Solaris

maxusers

他のパラメータを同時にスケールするためのものです。このパラメータを設定すると、以下の関連パラメータも自動に設定されます。 maxusersの値自体は、システムが搭載している物理メモリに応じて自動調整されます。デフォルトでは、物理メモリ容量とほぼ同等の値になるようです。

【maxusers関連パラメータ】
パラメータ デフォルト設定 説明
max_nprocs 10 + (16 * maxusers) 同時に実行できるプロセスの数(システムで持てる最大プロセス数)
maxuprc max_nprocs - 5 ユーザプロセスの最大数
ufs_ninode max_nprocs + 16 + maxusers + 64 iノードの最大数
ndquot (maxusers * NMOUNT / 4) + max_nprocs quotaテーブルのサイズ
ncsize max_procs + 16 + maxusers + 64 ディレクトリ名ルックアップキャッシュ(DNLC)エントリの最大数
ncallout 16 + max_nprocs コールアウトキューの数

ファイルディスクリプタの設定

rlim_fd_curとrlim_fd_maxで設定します。

【ファイルディスクリプタ関連パラメータ】
パラメータ デフォルト設定 説明
rlim_fd_cur 256 ファイルディスクリプタのソフトリミット。1つのプロセスがオープンできるディスクリプタ数。
rlim_fd_max OSのバージョンによって違うようです。 ファイルディスクリプタのハードリミット。1つのプロセスがオープンできるファイルデスクリプタの最大数。

TCP関連

tcp_conn_hash_sizeは、/etc/systemでないと設定できないようです。その他のネットワークカーネルパラメータは、nddコマンドで設定可能です。

# vi /etc/system
---
set tcp:tcp_conn_hash_size=1024
【TCP関連パラメータ】
パラメータ デフォルト設定 説明
tcp_conn_hash_size 512 TCP接続テーブルのハッシュサイズ。大量の接続を行うなら増やしておく必要があります。但し、それだけメモリも消費されるので適当な値に抑えておく必要があります。
ページのトップへ戻る