システムで使用されるプロセスの数や個々のユーザーが作成できるプロセスの数を制御する変数がいくつかあります。基本となる変数は maxusers です。この変数は、max_nprocs や maxuprc に割り当てられる値の基になります。
maxusers は、当初、システムがサポートできるログインユーザーの数を定義するものでした。カーネルの生成時には、さまざまなテーブルのサイズがこの設定値に基づいて決められていました。しかし、現在の Solaris リリースでは、サイズの決定は主にシステムのメモリー総量に基づいて行われます。そのため、今までの maxusers の使い方は、大部分が変更になっています。ただし、次のサブシステムの数は maxusers に基づいています。
システムで使用できるプロセスの最大数
システムに保持される割り当て構造体の数
ディレクトリ名ルックアップキャッシュ (DNLC) のサイズ
符号付き整数
M バイト単位のメモリー総量か 2048 (小さい方)
/etc/system ファイルに設定されていない場合は、物理メモリーに基づいて、1 から 2048。
/etc/system ファイルで設定する場合は、1 から 4096。
ユーザー
いいえ。この変数に依存する変数を計算した後に maxusers が再び参照されることはありません。
なし
システムによって計算されたデフォルトのユーザープロセス数が小さすぎる場合。このような状況は、システムコンソールに表示される次のメッセージでわかります。
out of processes |
デフォルトのプロセス数が大きすぎる場合は、次のようにします。
多量のメモリーがあり、動作しているプロセスの数が比較的少ないデータベースサーバーでは、maxusers のデフォルト値を少なくすることによってシステムメモリーを節約できます。
多量のメモリーがあり、動作しているプロセスがほとんどないファイルサーバーでは、この値を減らすことができます。ただし、DNLC のサイズを明示的に設定する必要があります。(ncsizeを参照。)
多量のメモリーがあり、動作しているプロセスがほとんどない計算サーバーでは、この値を減らすことができます。
変更の可能性あり
詳細は、maxusers (Solaris 7 リリース)を参照してください。
詳細は、maxusersを参照してください。
UID が root (0) のプロセス (fsflush など) のためにプロセステーブルに予約するシステムプロセススロットの数を指定します。
符号付き整数
5
5 から MAXINT
プロセス
いいえ。最初のパラメータ計算の後は使用されません。
Solaris 8 リリースでは、どのような /etc/system 設定でも有効です。
変更の可能性あり
たとえば、システムの UID 0 (root) のプロセスの数を、通常の値から 10 大きくした場合を考えてみてください。この設定をしないとユーザーレベルのプロセスを作れないような状況でも、この設定を行うことによって root でシェルを起動するために必要な余裕が生まれます。
このパラメータは、取り得る最大のプロセス ID の値を指定します。これは Solaris 8 以降のリリースで有効です。
pidmax は maxpid 変数の値を設定します。したがって、maxpid がいったん設定されると、pidmax は無視されます。maxpid は、カーネルの別のところで、最大のプロセス ID を判別したり、制約のチェックを行うために使用されます。
/etc/system ファイルに maxpid エントリを追加して設定しようとしても、効果はありません。
符号付き整数
30,000
266 から 999,999
プロセス
いいえ。pidmax の値を設定するためにブート時だけ使用されます。
値が reserved_procs の値や 999,999 と比較されます。値が reserved_procs より小さいか 999,999 より大きいと、値は 999,999 に設定されます。
max_nprocs に対して範囲の検査が行われ、max_nprocs は常にこの値以下に保たれます。
このパラメータの変更は、1 つのシステムで 30,000 を越えるプロセスを可能にするために必要となる手順の 1 つです。
変更の可能性あり
システム上に作成できるプロセスの最大数。これには、システムプロセスとユーザープロセスが含まれます。/etc/system に指定する任意の値が maxuprc の計算に使用されます。
さらに、この値は、他のシステムデータ構造体のサイズを決める際にも使用されます。この変数が使用される他のデータ構造体は次のとおりです。
ディレクトリ名ルックアップキャッシュのサイズを決めるとき (ncsize が指定されていない場合)
UFS のディスク割り当て構造体を割り当てるとき (ndquot が指定されていない場合)
構成されたシステム V セマフォによって使用されるメモリーの総量がシステム限度を超えていないか確認するとき
sun4m および Intel プラットフォーム向けのハードウェアアドレス変換のリソースを構成するとき
符号付き整数
10 + (16 × maxusers)
266 から maxpid の値
いいえ
maxpid と比較し、それよりも大きい場合は、maxpid に設定されます。Intel プラットフォームでは、さらにプラットフォーム固有の値と比較されます。max_nprocs は、max_nprocs、maxpid、プラットフォーム値のうち最も小さい値に設定されます。両プラットフォームとも、プラットフォーム値として 65,534 を使用します。
このパラメータの変更は、1 つのシステムで 30,000 を越えるプロセスを可能にするために必要となる手順の 1 つです。
変更の可能性あり
詳細は、max_nprocs (Solaris 8 より前のリリース)を参照してください。
符号付き整数
max_nprocs - reserved_procs
1 から max_nprocs - reserved_procs
プロセス
いいえ
max_nprocs - reserved_procs と比較され、小さい方に設定されます。
1 ユーザーが作成できるプロセスの数を強く制限するために、デフォルト値より小さい値を指定したい場合 (システムが作成できるプロセスの数が多くても)。この限度を超えると、次の警告メッセージがコンソールかメッセージファイルに出力されます。
out of per-user processes for uid N |
変更の可能性あり