IDN の性能や資源使用状況に影響を与える変数がいくつかあります。この節では、これらの変数やパラメタの設定方法について説明し、最小値、最大値、およびデフォルトの値を示します。
OpenBootTM PROM (OBP) には、IDN を有効にするために変更する必要のある IDN 関連の変数が 1 つあります。この変数は、SMR (Shared Memory Region: 共有メモリー領域) サイズ変数である idn-smr-size です。この変数には、SMR のサイズをメガバイト単位で指定します。値を 0 に設定すると、IDN ネットワーキングが無効になります。0 以外の値は、SMR のために予約されたカーネル空間のメガバイト数を示します。idn-smr-size のデフォルト値は、0 です。
SMR が大きいほど、データ転送に利用できるバッファの数が多くなります。ただし、ある一定のサイズを超えると、SMR を大きくしてもそれ以上の利点はありません。idn-smr-size の推奨値は、通常の用途に十分な 32 メガバイトです。最大値は、96 メガバイトです。
idn-smr-size の値は、OBP プロンプトでのみ設定することができます。新たな値を有効にするには、ドメインを再起動する必要があります。ただし、idn.conf ファイル中の idn_smr_size 変数を使用して、SMR の実際のサイズを削減することができます。
IDN 内にあるすべてのドメインでは、idn-smr-size が同じ値である必要があります。idn-smr-size の値が正しくないドメインがある場合、またはこの値を IDN 全体で変更したい場合は、対象のドメインを再起動して OBP プロンプトを表示し、この変数を設定し直します。
netcon(1M) ウィンドウで、スーパーユーザーとしてドメインにログインします。
ドメインを起動または停止して OBP プロンプトを表示し、以下の例のように setenv コマンドを使用して OBP 変数を設定します。
<#O> ok setenv idn-smr-size size |
ドメインを再起動します。
再起動に成功したら、OBP の設定を確認します。
<#O> ok cd /memory <#O> ok .properties |
2 番目のコマンドにより、以下の例のような、OBP 変数とその設定の一覧が表示されます。
idn-smr-size 00 00 00 20 idn-smr-addr 00 00 00 0a 7d 3f 00 00 00 00 00 00 02 00 00 00 dr-max-mem 00 00 9c 40 reg 0000000a 00000000 00000000 80000000 available 0000000a 7fff0000 00000000 00004000 0000000a 7fcd8000 00000000 00016000 0000000a 00000000 00000000 7189e000 name memory |
SMR の割り当てに成功した場合は、idn-smr-addr の値は、SMR のベース物理アドレス (例 0xA7D3F0000) とバイト単位のサイズ (例 0x2000000) を表す、0 でない値になります。
ndd(1M) ドライバパラメタを変更して、性能や資源使用状況が最適になるようにシステムを調整できます。この節では、変更可能なパラメタ、パラメタの変更方法、各パラメタに指定できる値の範囲について説明します。
現在のパラメタの設定を読み取ります。
# ndd /dev/idn parameter |
IDN ドライバがサポートするすべての ndd(1M) パラメタを表示するには、以下のコマンドを使用します。
# ndd /dev/idn "?" |
ドライバパラメタを変更します。
# ndd -set /dev/idn parameter value |
この節で説明するドライバパラメタを変更するには -set 構文を使用する必要があります。また、この節に示すドライバパラメタは、以下に記載する場合以外は、随時変更可能です。
以下の表に ndd(1M) コマンドに指定できる各パラメタの名前とそれぞれの簡単な説明を示します。ndd(1M) の使用法の詳細は、マニュアルページの ndd(1M) を参照してください。
表 3-1 ndd(1M) パラメタ
名前 |
最小値 |
最大値 |
デフォルト値 |
説明 |
---|---|---|---|---|
idn_modunloadable |
0 |
1 |
0 |
IDN ドライバを (使用されていないという前提で) 読み込み不能に設定する 2 進フラグ。値を 0 に設定するとこのフラグはオフになり、1 に設定するとオンになります。この値は、随時変更可能です。 |
idn_slabpool |
− |
− |
− |
ドメインが接続され、そのドメインが IDN のマスタードメインである場合は、このパラメタは、IDN スラブプールを表示し、利用可能なスラブの数とどのスラブが各ドメインに割り当てられているかを示します。この値は読み取り専用です。 |
idn_buffers |
− |
− |
− |
ドメインが持つ未処理の SMR 入出力バッファーの数。この数は、このドメインが接続された他のドメインを考慮した数です。この値は読み取り専用です。 |
idn_mboxtbl |
− |
− |
− |
ドメインに割り当てられたメールボックステーブルを表示します。ドメインが IDN のメンバーでない場合は、テーブルは表示されません。メールボックスヘッダークッキー、準備完了かつ使用可能な状態、あるいはそのいずれかの状態のポインタの値、各チャネルサービスが準備完了かつ使用可能な状態である、あるいはそのいずれかの状態であるかどうかを示す情報が表示されます。この値は読み取り専用です。 |
idn_mboxtbl_all |
− |
− |
− |
idn_mboxtbl と同じ内容を、IDN 全体について表示します。このパラメタは、マスタードメインとの関連で実行される場合にだけ意味があります。これは、マスタードメインが広域メールボックス領域へのポインタを保持するためです。 |
idn_mainmbox |
− |
− |
− |
他の IDN メンバードメインに対する送受信メールボックス用にドメインが保持するメールボックス管理構造体の詳細情報が含まれています。この値は読み取り専用です。 |
idn_global |
− |
− |
− |
ドメインに関する広域状態情報 (たとえば、使用可能なチャネル、使用可能なチャネルに接続されたドメインの数、SMR の物理アドレスなど) を表示します。IDN 内の各ドメインの接続状態の要約も表示します。この値は読み取り専用です。 |
idn_domain |
− |
− |
− |
ドメインに関する特定の状態情報 (たとえば、未処理のタイマーの数、投票チケット、未処理のバッファーの数) を表示します。この値は読み取り専用です。 |
idn_domain_all |
− |
− |
− |
idn_domain と類似の情報を表示しますが、目的のドメインが接続されたすべてのドメインに関する情報が含まれます。この値は読み取り専用です。 |
idn_bind_net |
− |
− |
− |
ドメイン内の特定のプロセッサにユーザーが特定のチャネルサーバー (インタフェース) を結合できるようにします。これにより、IDN データの実際の受信処理をドメイン内のどのプロセッサから指示するかを細かく制御できます。デフォルトでは、サーバーは結合されていません。したがって、サーバーは通常のスレッドで処理時間を直接競い合います。この引数は、channel=cpuid 形式で指定します。たとえば、0=25 は、idn0 インタフェースで受信するデータの処理を担当するチャネルサーバーを cpuid 25 に結合します。この値は随時変更可能です。 |
IDN では、IDN ドライバ用の driver.conf(4) ファイルを使用して特定の調整可能なパラメタと構成パラメタ、またはそのいずれかを設定できます。このファイルは、以下に示すパスにあります。
/platform/SUNW,Ultra-Enterprise-10000/kernel/drv/idn.conf
これらのパラメタを変更するには、driver.conf(4) ファイルを編集する必要があります。ほとんどのパラメタは、グローバルパラメタです。bind_cpu パラメタのみが、インスタンス (インタフェース) ごとに作用します。パラメタの値は、modload(1M) コマンドを使用して IDN ドライバを読み込むと有効になります。
IDN パラメタを設定するための手順は、ドメインの現在の状態によって異なります。ドメインが起動され稼動しているが、IDN にリンクされていない場合は、「再起動しないで IDN パラメタを設定する」の指示に従って、ドメインを再起動せずに IDN パラメタを設定します。ドメインが稼動していないか、またはドメインを再起動する場合は、「再起動しないで IDN パラメタを設定する」の指示に従って IDN パラメタを設定します。
ドメインが IDN にリンクされていないことを確認します。
netcon(1M) ウィンドウで、ディレクトリを idn.conf ファイルが存在するディレクトリに変更します。
% cd /platform/SUNW,Ultra-Enterprise-10000/kernel/drv/ |
使用する新しい値を反映するように、idn.conf ファイルを編集します。
すべての IDN ネットワークインタフェースを unplumb します。
ndd(1M) コマンドを使用して、idn_modunloadable パラメタを適切な値に設定します。
% ndd -set /dev/idn idn_modunloadable 1 |
modunload(1M) コマンドを使用して、IDN ドライバモジュールをアンロードします。
% modunload -i id |
id の値は、IDN モジュール ID 番号の ID に対応する必要があります。IDN モジュール ID 番号の入手方法の詳細は、modinfo(1M) マニュアルページを参照してください。
IDN ネットワークインタフェースを再度 plumb します。
netcon(1M) ウィンドウで、ディレクトリを idn.conf ファイルが存在するディレクトリに変更します。
% cd /platform/SUNW,Ultra-Enterprise-10000/kernel/drv/ |
テキストエディタを使用してこのファイルを編集し、IDN のパラメタと値を設定します。
以下に idn.conf ファイルの例を示します。
name="idn" parent="pseudo" instance=0 bind_cpu=10; name="idn" parent="pseudo" instance=1; name="idn" parent="pseudo" instance=2 bind_cpu=35; idn_pil=4; idn_protocol_nservers=2; |
すべての必須パラメタについて、同一 IDN 内にある各ドメインの idn.conf ファイルを編集する必要があります。その他のパラメタについては、目的のドメインの idn.conf ファイルのみを編集します。
各エントリは複数の行で構成できますが、セミコロンで終了する必要があります。上の例では、インスタンス 0 チャネルサーバー (idn0) は、CPU 10 に結合されます (システムに CPU 10 があるという仮定で)。(idn1) 用のインスタンス 1 チャネルサーバーはシステム内のいずれの CPU にも結合されず、(idn2) 用のインスタンス 2 チャネルサーバーは CPU 35 に結合されます (システムに CPU 35 があるという仮定で)。
ドメインを再起動します。
一致させる必要があるパラメタの設定を変更した場合は、IDN 内の各ドメインを再起動する必要があります。一致させる必要のないパラメタの設定を変更した場合は、IDN 内の 1 つのドメインを再起動するだけですみます。一致させる必要のあるパラメタの一覧は、「一致させる必要があるパラメタ」を参照してください。
modload(1M) コマンドによる IDN の読み込み時に特定のパラメタが設定されるように、idn.conf(4) ファイルにそれらのパラメタの値を定義しておくことができます。このファイルに IDN のインスタンスを追加することもできます。各 IDN インスタンスに対して、idn.conf(4) ファイルに以下の行 (n はインスタンスの番号) を追加します。
name="idn" parent="pseudo" instance=n; |
ドメインが IDN にリンクされている間は、すべての idn.conf(4) ファイルパラメタを変更できます。ただし、値を有効にするには、ドメインを再起動する必要があります。
以下の表にパラメタの名前、パラメタの最小値、最大値、デフォルト値、またそれらの値の単位を示します。
以下の表に示したパラメタは、経験を積んだ IDN ユーザー以外は使用しないでください。値を変更すると、IDN の動作に悪影響を及ぼす場合があります。
名前 |
最小値 |
最大値 |
デフォルト値 |
説明 |
---|---|---|---|---|
bind_cpu |
− |
− |
-1 |
対応するチャネルサーバーがオンラインになった後に、そのチャネルサーバーに結合する cpuid を指定します。このパラメタは、特定の CPU インスタンスに関連付ける必要があります。指定されたcpuid がドメイン内の有効な CPU でない場合は、チャネルサーバーは結合されません。この値には、CPU の ID を指定します (-1 は非結合)。 |
idn_awolmsg_interval |
0 |
3600 |
30 |
ドメインごとに、コンソール上に AWOL メッセージが表示される頻度を制御します。この値は秒単位で指定します。 |
idn_checksum |
0 |
1 |
1 |
SMR メールボックスに対する検査合計の検証を設定する 2 進フラグです。値を 0 に設定するとこのフラグはオフになり、1 に設定するとオンになります。 |
idn_dmv_pending_max |
8 |
512 |
128 |
単一のプロセッサが IDN ドライバに対して保留できる未処理の DMV 割り込みの最大数を制御します。このパラメタは、着信クロスドメイン割り込みのデータのカプセル化のために使用するキューの構造体も記述します。この値は数で指定します。 |
idn_history |
0 |
1 |
0 |
IDN が特定の IDN イベントの内部ログをオンにするかどうかを設定する 2 進フラグです。このパラメタは、問題の分析のためのみに使用します。サポート担当者が後のデバッグのために情報を収集することが可能になります。値を 0 に設定するとこのフラグはオフになり、1 に設定するとオンになります。 |
idn_hiwat |
1024 |
1048576 |
262144 |
IDN STREAM のキューの高ウォーターマークを制御します。この値はバイト単位で指定します。 |
idn_lowat |
1 |
524288 |
1 |
IDN STREAM のキューの低ウォーターマークを制御します。この値はバイト単位で指定します。 |
idn_max_nets |
1 |
32 |
8 |
IDN ドライバ上に plumb できるネットワークチャネルまたはインタフェースの最大数を制御します。この値は一般的な単位または個数で指定します。 |
idn_mbox_per_net |
31 |
511 |
127 |
各メールボックステーブル (チャネルとインタフェース、あるいはそのいずれか) のメールボックスエントリの数を制御します。この値は奇数である必要があります。この値は一般的な単位または個数で指定します。 |
idn_msgwait_cfg |
10 |
300 |
40 |
CFG (構成) メッセージに対する応答待ち時間の最小値を制御します。この値は秒単位で指定します。 |
idn_msgwait_cmd |
10 |
300 |
40 |
(通常マスタードメインへの) CMD (コマンド) メッセージに対する応答待ち時間の最小値を制御します。この値は秒単位で指定します。 |
idn_msgwait_con |
10 |
300 |
20 |
CON (接続) メッセージに対する応答待ち時間の最小値を制御します。この値は秒単位で指定します。 |
idn_msgwait_data |
10 |
300 |
30 |
DATA (切断) 起動呼び出しに対する応答待ち時間の最小値を制御します。この値は秒単位で指定します。 |
idn_msgwait_fin |
10 |
300 |
40 |
FIN (切断) メッセージに対する応答待ち時間の最小値を制御します。この値は秒単位で指定します。 |
idn_msgwait_nego |
10 |
300 |
20 |
NEGO (ネゴシエーション) メッセージに対する応答待ち時間の最小値を制御します。この値は秒単位で指定します。 |
idn_netsvr_spin_count |
0 |
10000 |
500 |
チャネルサーバーが、プロセッサとの結合を放棄する前に着信パケットのポーリングを行う回数を制御します。この値は一般的な単位または回数で指定します。 |
idn_netsvr_wait_max |
0 |
6000 |
1600 |
チャネルサーバーが永久に休眠状態になる前に休眠する期間を示すクロック刻みの最大数を制御します。 |
idn_netsvr_wait_min |
0 |
3000 |
40 |
着信データパケットが見つからないときにチャネルサーバーが休眠する期間を示す最初のクロック刻みの値を制御します。この値はクロック刻みで指定します (100 パルス刻みは、1 秒に相当します)。 |
idn_netsvr_wait_shift |
1 |
5 |
1 |
チャネルサーバーが休眠状態から目覚めたときにパケットを見つけることができないたびに、チャネルサーバーの休眠時間を増加させる割合を示します。この値を 1 に設定すると毎回休眠時間が倍になっていきます。休眠時間は、idn_netsvr_wait_max で指定された最大値まで増加します。この値は一般的な単位または数で指定します。 |
idn_nwr_size |
0 |
SMR 全体 |
SMR 全体 |
ネットワークベースの通信に使用する、SMR 内の Network Region (NWR) のサイズを制御します。この値はメガバイト単位で指定します。 |
idn_pil |
1 |
9 |
8 |
ソフト割り込みの優先レベルを制御します。このレベルでクロスドメイン割り込みが処理されます。この値は数値で指定します。 |
idn_protocol_nservers |
1 |
16 |
4 |
リモート IDN メンバードメインからの IDN 接続管理メッセージの処理を任されるスレッドの数を制御します。この値は個数で指定します。 |
idn_reclaim_max |
0 |
128 |
0 |
ドメインが、未処理の利用されていないバッファーの再利用を試みる最大の回数を制御します。この値が 0 の場合は、ドメインは、最小しきい値 (idn_reclaim_min) に達した後、できるだけ多くのバッファーの再利用を試みます。この値はバッファー単位で指定します。 |
idn_reclaim_min |
1 |
128 |
5 |
未処理 (利用されていない) バッファーのしきい値を制御します。この値を超えると、ドメインはバッファーの再利用を試みます。この値はバッファー単位で指定します。 |
idn_retryfreq_con |
1 |
60 |
2 |
リンクしようとするドメインが CON (接続) フェーズに達したことの確認の再試行間隔の最小時間を制御します。この値は秒単位で指定します。 |
idn_retryfreq_fin |
1 |
60 |
3 |
リンク解除しようとするドメインが FIN (切断) フェーズに達したことの確認の再試行間隔の最小時間を制御します。この値は秒単位で指定します。 |
idn_retryfreq_nego |
1 |
60 |
2 |
IDN 接続の開始の再試行間隔の最小時間を制御します。この値は秒単位で指定します。 |
idn_sigbpil |
1 |
9 |
3 |
ソフト割り込みの優先レベルを制御します。このレベルで SSP の sigblock 要求が処理されます。この値は数値で指定します。 |
idn_slab_bufcount |
4 |
1024 |
32 |
スラブごとに割り当てるバッファーの数を制御します。この値はバッファー単位で指定します。 |
idn_slab_mintotal |
2 |
16 |
8 |
マスタードメインが保持する利用可能なスラブの最小数を制御します。マスタードメインは、利用可能なスラブの総数がこの変数の値を下回ると、スレーブドメインに未使用スラブの返却を要求します。この値はスラブ単位で指定します。 |
idn_slab_prealloc |
0 |
10 |
0 |
ドメインの IDN へのリンク時に事前に割り当てるスラブの数を制御します。この値はスラブ単位で指定します。 |
idn_smr_bufsize |
512 |
524288 |
16384 |
IDN MTU サイズに変換される、SMR 入出力バッファーのサイズを制御します。この値は 2 の倍数をバイト単位で指定します。 |
idn_smr_size |
0 |
SMR 全体 |
0 |
SMR のサイズは、OBP 変数 idn-smr-size の値によって制限されます。SMR のサイズは、idn-smr-size 変数の最小値と idn_smr_size パラメタの最小値によって決まります。idn-smr-size がゼロの場合は、OBP 変数が idn.conf(4) パラメタを上書きします。 |
idn_window_incr |
0 |
32 |
8 |
アクティブなチャネルまたはインタフェース、あるいはその両方が追加されるたびに idn_window_max が大きくなる値を制御します。この値はバッファー単位で指定します。 |
idn_window_max |
8 |
256 |
64 |
未処理バッファーの基準しきい値を制御します。この値を超えると、ドメインは対応するドメインへのデータパケットの送信を停止します。この値はバッファー単位で指定します。 |
一部の IDN パラメタは、同一 IDN 内のすべてのドメインで値を一致させる必要があります。ドメインのリンクで構成情報を交換するときに、各ドメインは、リンク操作を進める前に、受信した情報がローカルパラメタと一致するかどうかを確認します。以下に同一 IDN 内のすべてのドメインで値を一致させる必要があるパラメタの名前を示します。
idn_nwr_size
idn_smr_bufsize
idn_slab_bufcount
idn_max_nets
idn_mbox_per_net
idn_checksum