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

プロセスのサイズのチューニング可能パラメータ

システムで使用されるプロセスの数や個々のユーザーが作成できるプロセスの数を制御する変数がいくつかあります。基本となる変数は maxusers です。この変数は、max_nprocsmaxuprc に割り当てられる値の基になります。

maxusers

説明

maxusers は、当初、システムがサポートできるログインユーザーの数を定義するものでした。カーネルの生成時には、さまざまなテーブルのサイズがこの設定値に基づいて決められていました。しかし、現在の Solaris リリースでは、サイズの決定は主にシステムのメモリー総量に基づいて行われます。そのため、今までの maxusers の使い方は、大部分が変更になっています。ただし、次のサブシステムの数は maxusers に基づいています。

  • システムで使用できるプロセスの最大数

  • システムに保持される割り当て構造体の数

  • ディレクトリ名ルックアップキャッシュ (DNLC) のサイズ

データ型

符号付き整数

デフォルト

M バイト単位のメモリー総量か 2048 (小さい方)

範囲

1 から 2048


注 -

1024 より大きい値は /etc/system に指定する必要があります。4096 より大きい値は、4096 に設定されます。


単位

ユーザー

動的か

いいえ。この変数に依存する変数を計算した後に maxusers が再び参照されることはありません。

検査

なし

どのような場合に変更するか

システムによって計算されたデフォルトのユーザープロセス数が小さすぎる場合。このような状況は、システムコンソールに表示される次のメッセージでわかります。


out of processes

デフォルトのプロセス数が大きすぎる場合は、次のようにします。

  • 多量のメモリーがあり、動作しているプロセスの数が比較的少ないデータベースサーバーでは、maxusers のデフォルト値を少なくすることによってシステムメモリーを節約できます。

  • 多量のメモリーがあり、動作しているプロセスがほとんどないファイルサーバーでは、この値を減らすことができます。ただし、DNLC のサイズを明示的に設定する必要があります (ncsizeを参照)。

  • 多量のメモリーがあり、動作しているプロセスがほとんどない計算サーバーでは、この値を減らすことができます。

コミットレベル

変更の可能性あり

変更履歴

詳細は、maxusers (Solaris 7 リリース)」を参照してください。

reserved_procs

説明

UID が root (0) のプロセス (fsflush など) のためにプロセステーブルに予約するシステムプロセススロットの数を指定します。

データ型

符号付き整数

デフォルト

5

範囲

5 から MAXINT

単位

プロセス

動的か

いいえ。最初のパラメータ計算の後は使用されません。

検査

Solaris 8 リリースでは、どのような /etc/system 設定でも有効です。

コミットレベル

変更の可能性あり

どのような場合に変更するか

たとえば、システムの UID 0 (root) のプロセスの数を、通常の値から 10 大きくした場合、この設定をしないとユーザーレベルのプロセスを作れないような状況でも、root でシェルを起動するために必要な余裕が生まれます。

pidmax

説明

このパラメータは、取り得る最大のプロセス ID の値を指定します。これは Solaris 8 以降のリリースで有効です。

pidmaxmaxpid 変数の値を設定します。したがって、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 は常にこの値以下に保たれます。

どのような場合に変更するか

システムで 30,000 を超えるプロセスをサポートするには、このパラメータの変更が必要です (他の処理も必要)。

コミットレベル

変更の可能性あり

max_nprocs

説明

システム上に作成できるプロセスの最大数。これには、システムプロセスとユーザープロセスが含まれます。/etc/system に指定する任意の値が maxuprc の計算に使用されます。

さらに、この値は、他のシステムデータ構造体のサイズを決める際にも使用されます。この変数が使用される他のデータ構造体は次のとおりです。

  • ディレクトリ名ルックアップキャッシュのサイズを決めるとき (ncsize が指定されていない場合)

  • UFS のディスク割り当て構造体を割り当てるとき (ndquot が指定されていない場合)

  • 構成されたシステム V セマフォによって使用されるメモリーの総量がシステム限度を超えていないか確認するとき

  • sun4d、sun4m、Intel プラットフォーム向けのハードウェアアドレス変換のリソースを構成するとき

データ型

符号付き整数

デフォルト

10 + (16 * maxusers)

範囲

266 から maxpid の値

動的か

いいえ

検査

maxpid と比較し、それよりも大きい場合は、maxpid に設定されます。sun4d と Intel プラットフォームでは、さらにプラットフォーム固有の値と比較されます。max_nprocs は、max_nprocsmaxpid、プラットフォーム値のうち最も小さい値に設定されます。両プラットフォームとも、プラットフォーム値として 65,534 を使用します。

どのような場合に変更するか

このパラメータの変更は、1 つのシステムで 30,000 を越えるプロセスを可能にするために必要となる手順の一部です。

コミットレベル

変更の可能性あり

変更履歴

詳細は、max_nprocs (Solaris 8 より前のリリース)」を参照してください。

maxuprc

説明

1 ユーザーが 1 つのシステム上に作成できるプロセスの最大数

データ型

符号付き整数

デフォルト

max_nprocs - reserved_procs

範囲

1 から max_nprocs - reserved_procs

単位

プロセス

動的か

いいえ

検査

max_nprocs - reserved_procs と比較され、小さい方に設定されます。

どのような場合に変更するか

1 ユーザーが作成できるプロセスの数を強く制限するために、デフォルト値より小さい値を指定したい場合 (システムが作成できるプロセスの数が多くても)。この限度を超えると、次の警告メッセージがコンソールかメッセージファイルに出力されます。


out of per-user processes for uid N

コミットレベル

変更の可能性あり