カーネルパラメータの設定変更は、/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ファイルの記述ミスなどで、万が一システムが起動しなくなってしまったら、以下の方法で対応するといいと思います。
対応策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の値自体は、システムが搭載している物理メモリに応じて自動調整されます。デフォルトでは、物理メモリ容量とほぼ同等の値になるようです。
パラメータ | デフォルト設定 | 説明 |
---|---|---|
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_conn_hash_size | 512 | TCP接続テーブルのハッシュサイズ。大量の接続を行うなら増やしておく必要があります。但し、それだけメモリも消費されるので適当な値に抑えておく必要があります。 |