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

Solaris カーネルのチューニング

次の表では、パラメータに適用可能なチューニングの方法を示します。

チューニング可能パラメータの適用方法 

参照先 

/etc/system ファイルの変更

/etc/system ファイル」

カーネルデバッガ (kmdb) の使用

kmdb コマンド」

モジューラデバッガ (mdb) の使用

mdb コマンド」

ndd コマンドによる TCP/IP パラメータの設定

第 4 章インターネットプロトコル群のチューニング可能パラメータ

/etc/default 下のファイルの変更

「NCA パラメータのチューニング」

/etc/system ファイル

/etc/system ファイルは、カーネルパラメータの値を静的に調整する機構を提供します。このファイルに指定された値は、ブート時に読み込まれ適用されます。このファイルに対する変更は、システムがリブートされるまでオペレーティングシステムに適用されません。

Solaris 8 より前のリリースでは、パラメータの値を設定する /etc/system のエントリは、次の 2 つの処理段階に分けて適用されていました。

2 つめの処理段階では、許容されないように思われる値にパラメータを設定したり、初期構成で値が上書きされるパラメータ (max_nprocs など) に値を割り当てたりして、ユーザーや管理者にとって混乱を招く場合がありました。

Solaris 8 リリースから、構成パラメータを計算する前にすべての値を設定する 1 つの処理段階が設けられました。

例 — /etc/system を使用したパラメータの設定

次の /etc/system エントリでは、NFS バージョン 2 ソフトウェアを使用してマウントされたファイルシステムに対し先読みするブロックの数を指定します。


set nfs:nfs_nra=4

適正でない値からの復元

値を変更する前に /etc/system ファイルのコピーを作成しておけば、不正な値を簡単に元の値に戻せます。次に例を示します。


# cp /etc/system /etc/system.good

/etc/system ファイルに指定した値が原因でシステムがブートできない状態になった場合は、次のコマンドでブートします。


ok boot -a

このコマンドを実行すると、ブートプロセスで使用する各ファイルの名前をシステムから要求されます。/etc/system ファイルの名前が要求されるまで Return キーを押して、デフォルトの値を適用します。Name of system file [/etc/system]: というプロンプトが表示されたら、正しい /etc/system ファイルの名前かまたは /dev/null を入力します。


Name of system file [/etc/system]: /etc/system.good

/dev/null を指定した場合は、このパスによってシステムは /dev/null から構成情報を読み取ろうとします。このファイルは空なので、システムはデフォルト値を使用することになります。システムがブートした後、/etc/system ファイルを修正できます。

システム回復については、『Solaris のシステム管理 (基本編)』を参照してください。

kmdb コマンド

kmdb は対話式カーネルデバッガであり、その一般的な構文は mdb と同じです。対話式カーネルデバッガの利点は、ブレークポイントを設定できることです。ブレークポイントに達すると、データを検証し、カーネルコードの手順を 1 つずつ実行できます。

kmdb は必要に応じてロードしたりロード解除したりできます。対話的にカーネルをデバッグするためにシステムをリブートする必要はありません。kadb は必要でした。

詳細は、kmdb(1) のマニュアルページを参照してください。

mdb コマンド

Solaris 8 リリースから組み込まれたモジューラデバッガ mdb は Solaris のデバッガの中でも独特で、簡単に拡張できます。このデバッガのプログラミング API を使用して、モジュールをコンパイルすることによって、デバッガのコンテキスト内で希望する処理を実行することができます。

さらに、mdb には、コマンド行での編集、コマンド履歴、組み込み出力ページャ、構文チェック、コマンドパイプラインなどの、いくつかの便利な機能があります。カーネルに対する事後検査用のデバッガとしては、mdb をお勧めします。

詳細は、mdb(1) のマニュアルページを参照してください。

例 — mdb を使用した値の変更

整数パラメータ maxusers の値を 495 から 512 に変更するには、次のようにします。


# mdb -kw
Loading modules: [ unix krtld genunix ip logindmux ptm nfs ipc lofs ]
> maxusers/D
maxusers:
maxusers:       495
> maxusers/W 200
maxusers:       0x1ef           =       0x200
> $q

実際に変更する場合は、maxusers を変更したいパラメータのアドレスに、値を設定したい値に置き換えて、このコマンドを実行します。

モジューラデバッガの使用についての詳細は、『Solaris モジューラデバッガ』を参照してください。

kmdb デバッガまたは mdb デバッガを使用する場合、モジュール名の接頭辞は不要です。モジュールのロード後、そのシンボルはコアカーネルのシンボルやすでにロードされている他のモジュールのシンボルとともに共通の名前空間を形成するからです。

たとえば、UFS モジュールがロードされている場合、各デバッガは ufs:ufs_WRITESufs_WRITES としてアクセスします。 ufs: 接頭辞が必要なのは、/etc/system ファイルに設定する場合です。