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

カーネルパラメータ

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

maxusers (Solaris 7 リリース)

説明

maxusers パラメータから max_nprocsmaxuprc が計算されます。

データ型

符号付き整数

デフォルト

M バイト単位のメモリー量と 1024 の小さい方

範囲

1 から 2048


注 –

/etc/system には、1024 より大きい値を指定する必要があります。2048 より大きい値が提供されると、計算では 2048 の値を使用しますが、その後の処理では、指定された値に設定されます。


単位

ユーザー

動的か

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

検査

なし

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

システムが計算したデフォルトのユーザープロセス数では足りない場合。プロセス数が足りないと、次のメッセージがシステムコンソールやメッセージファイルに出力されます。


out of processes
コミットレベル

変更の可能性あり

max_nprocs (Solaris 8 より前のリリース)

説明

システム上に作成できるプロセスの最大数。これには、システムプロセスとユーザープロセスが含まれます。Solaris 8 より前のリリースでは、この値は計算によって算出され、maxuprc の設定に使用されていました。

さらに、この値は、他のシステムデータ構造体のサイズを決める際にも使用されます。Solaris 8 より前のリリースでは、/etc/system ファイルに値が指定されていると、計算された値の代わりにこの値が使用されます。この変数が使用される他のデータ構造体は次のとおりです。

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

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

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

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

データ型

符号付き整数

デフォルト

10 + (16 x maxusers )

範囲

266 から pidmax の値

動的か

いいえ。初期のパラメータ計算の後に、max_nprocsv 構造体の v_proc 要素に代入されます。動作しているシステムの v.v_proc を変更すると、ほぼ確実に、システムがクラッシュするか、エラー表示のないままデータが損傷を受けます。

検査

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

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

Solaris 8 リリースから、この値を変更することで 1 つのシステムで 30,000 を超えるプロセスをサポートできるようになりました。このパラメータの変更は、1 つのシステムで 30,000 を越えるプロセスを可能にするために必要となる手順の 1 つです。

コミットレベル

変更の可能性あり

ページング関連のチューニング可能パラメータ

Solaris 2.6 カーネルパッチの一部のリビジョン (SPARC プラットフォームの 105181-10 および Intel プラットフォームの 105182-09) と Solaris 7 リリースで、新しいパラメータが導入されました。 priority_paging (優先度ページング) です。ページアウトスレッド活動の新しい開始点 (cachefree) も使用されます。使用可能なメモリーが cachefreelotsfree の間にある間は、実行可能部分 (テキスト、スタック、またはデータ) からのページである場合は、優先度ページングはそのページをスキップするようページ検査のアルゴリズムを変更します。メモリーが lotsfree を下回ると、すべてのページが同等にみなされます。この機能はデフォルトで無効になっています。この機能を有効にするには、cachefreelotsfree より大きい値を設定するか、priority_paging 変数にゼロ以外の値を設定します (cachefreelotsfree の 2 倍の値が設定されます)。

cachefree (Solaris 8 リリース)

説明

Solaris 8 リリースで、ファイルシステムページのキャッシュ方法が変更されました。これらの変更には、優先度ページング機能が含まれます。


注 –

cachefreepriority_paging の両方の設定を /etc/system ファイルから削除してください。


キャッシュ方法の変更により、ファイルシステムの動作に伴って発生する仮想メモリーシステムへの負担がほとんど解消されます。統計によると、次のような新しい動作が見られます。

  • ページ再利用の数が多くなります。これは、入出力が終了すると、ページが明示的に空リストに追加されるためです。

  • 空きメモリーが増えます。これは、空きメモリーのカウントにファイルキャッシュの大部分が含まれるためです。

  • 走査率が大幅に減ります。

コミットレベル

廃止または互換性がなくなる可能性あり

変更履歴

詳細は、cachefree (Solaris 2.6 リリースおよび Solaris 7 リリース)を参照してください。

cachefree (Solaris 2.6 リリースおよび Solaris 7 リリース)

説明

cachefreelotsfree より大きい値を設定すると、優先度ページング機能が有効になります。この変数は、少なくともパッチ 105181 のリビジョン 10 がインストールされた Solaris 2.6 リリース、および Solaris 7 リリースが動作するシステムで使用できます。この機能は、デフォルトでは無効になっています (cachefreelotsfree が等しい)。

データ型

符号なし long

デフォルト

priority_paging が設定されていない場合は、lotsfree の値です。設定されている場合は、cachefreelotsfree の 2 倍です。

範囲

lotsfree からシステムの物理メモリー量

単位

ページ

動的か

はい

検査

lotsfree より小さいと、lotsfree の値にリセットされます。

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

システムのメモリーが逼迫している場合、およびファイルの内容が将来必要であるような入出力を極めて多く行う場合を除き、常に有効にしておくべきです。

コミットレベル

廃止または互換性がなくなる可能性あり

priority_paging (Solaris 8 リリース)

説明

この変数に基づき lotsfree の 2 倍の値が cachefree に設定されます。

Solaris 8 リリースで、ファイルシステムページのキャッシュ方法が変更されました。これらの変更には、優先度ページング機能が含まれます。


注 –

cachefreepriority_paging の両方の設定を /etc/system ファイルから削除してください。


コミットレベル

廃止または互換性がなくなる可能性あり

変更履歴

詳細は、priority_paging (Solaris 2.6 リリースおよび Solaris 7 リリース)を参照してください。

priority_paging (Solaris 2.6 リリースおよび Solaris 7 リリース)

説明

優先度ページング機能を有効にします。設定すると、cachefreelotsfree の 2 倍の値が設定され、優先度ページングが有効になります。

データ型

符号付き整数

デフォルト

0

範囲

(cachefree が別途設定されていない場合、優先度ページングを無効にする) か 1 (有効にする)

単位

切り替え (オン/オフ)

動的か

いいえ。cachefree の値はブート時にのみ設定します。実行時に有効にするには、システムの動作中に mdb cachefree を設定します。

検査

なし

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

システムのメモリーが逼迫している場合、およびファイルの内容が将来必要であるような入出力を極めて多く行う場合を除き、常に有効にしておくべきです。

コミットレベル

廃止または互換性がなくなる可能性あり

tmpfs:tmpfs_minfree

説明

TMPFS がシステムの他の部分のために残しておくスワップ空間の最小量

データ型

符号付き long

デフォルト

256

範囲

0 からスワップ空間サイズの最大値

単位

バイト

動的か

はい

検査

なし

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

TMPFS が大量に使用されるシステムで適度なスワップ空間を維持するために、この値を増やすことができます。次のメッセージがコンソールやシステムメッセージファイルに出力された場合は、使用量がこの限度に達したことを示しています。


fs-name: File system full, swap space limit exceeded
コミットレベル

変更の可能性あり

pages_pp_maximum (Solaris 9 より前のリリース)

説明

ロックされていないことをシステムが要求するページ数を定義します。ページのロック要求によって使用可能なメモリーがこの値を下回る場合は、その要求は拒否されます。

データ型

符号なし long

デフォルト

200、tune_t_minarmem + 100、[ブート時に使用可能なメモリーの 10%] 、のうちで最も大きいもの

範囲

デフォルト値から物理メモリーの 20% 以内。システムは、「検査」の項目で記述されていなければ、この範囲を強制しません。

単位

ページ

動的か

はい、ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、計算された値にリセットされます。

検査

200、tune_t_minarmem + 100、[使用可能なメモリーの 10%]、/etc/system からの値の中で最も大きいもの。/etc/system からの値が増やされても、メッセージは表示されません。ブート時にのみ行われます。

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

メモリーのロック要求や、SHARE_MMU フラグを指定した共有メモリーセグメントへの接続が失敗したが、使用可能なメモリーが十分ありそうな場合。32G バイトシステムで、メモリーの 10% を空き状態に維持することは過剰である場合があります。

値が大きすぎると、メモリーロック要求が不必要に失敗する可能性があります。

コミットレベル

変更の可能性あり

一般的なカーネル変数

noexec_user_stack (Solaris 2.6、Solaris 7、Solaris 8 リリース)

説明

Solaris 2.6 リリースで導入されたもので、スタックを実行不能と印付けすることができます。これにより、バッファオーバーフロー攻撃が前よりも困難になります。

Solaris 2.6 リリースでは、この値はスレッド化されたアプリケーションには適用されません。すべての 64 ビットの Solaris アプリケーションでは、この変数の設定に関係なく、すべてのスタックが実行不能にされます。


注 –

この変数は Solaris 2.6、7、または 8 リリースが動作しているすべてのシステムに存在しますが、sun4u、sun4m、sun4d アーキテクチャでのみ有効です。


データ型

符号付き整数

デフォルト

0 (無効)

範囲

0 (無効)、1 (有効)

単位

切り替え (オン/オフ)

動的か

はい。ただし、すでに実行中のプロセスに対しては無効です。値が設定された後に起動されたプロセスに対してのみ有効です。

検査

なし

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

アプリケーションが、mprotect(2) を使用してスタックを実行可能にすることなくスタックに実行可能コードを意図的に置いている場合を除き、この変数は常に有効にすべきです。

コミットレベル

変更の可能性あり

一般的な入出力

rlim_fd_cur (Solaris 7 およびそれ以前のリリース)

説明

1 つのプロセスがオープンできるファイル記述子数の「弱い」限度。プロセスは、自身のファイル記述子数限度を、rlim_fd_max で定義される「強い」限度の範囲内で調整できます。それには、setrlimit() 呼び出しを使用するか、プロセスを実行するシェルで limit コマンドを実行します。「強い」限度の範囲内で値を調整する場合には、スーパーユーザー特権は必要ありません。

データ型

符号付き整数

デフォルト

64

範囲

1 から MAXINT

単位

ファイル記述子

動的か

いいえ。rlimits 構造体にロードされます。

検査

rlim_fd_max と比較され、rlim_fd_cur の方が大きい場合は、rlim_fd_currlim_fd_max にリセットされます。

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

1 プロセス当たりのデフォルトのオープンファイル数が十分でない場合。この値を増やす意味は、プログラムで setrlimit(2) を使用して自身で使用できる最大ファイル記述子数を増やす必要がなくなる点にあります。

コミットレベル

変更の可能性あり

rlim_fd_max (Solaris 8 リリース)

説明

1 つのプロセスがオープンできるファイル記述子の「強い」限度。この制限を変更するには、スーパーユーザー特権が必要です。

データ型

符号付き整数

デフォルト

1024

範囲

1 から MAXINT

単位

ファイル記述子

動的か

いいえ

検査

なし

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

1 プロセス当たりの最大オープンファイル数が十分でない場合。ただし、システムには他の制限もあるため、ファイル記述子の数を増やすことが必ずしも有用とは限らないことに留意してください。

  • 標準入出力を使用する 32 ビットプログラムでは、256 ファイル記述子に制限されます。標準入出力を使用する 64 ビットプログラムでは、20 億の記述子まで使用できます。

  • select(3C) では、デフォルトで、fd_set によって 1024 記述子に限定されます。ただし、Solaris 7 リリース以降では、32 ビットアプリケーションコードをより大きな fd_set サイズ (65,536 以下) で再コンパイルできます。64 ビットアプリケーションの fd_set サイズは 65,536 で、変更することはできません。

システム全体に対してこれを変更する別の方法として plimit(1) コマンドがあります。plimit を使用して親となるプロセスの限度を変更すると、すべての子プロセスがその限度を継承します。これは inetd などのデーモンに便利です。

コミットレベル

変更の可能性あり

segkpsize (Solaris 7 およびそれ以前のリリース)

説明

利用できるページング可能なカーネルのメモリー量を指定します。このメモリーは主にカーネルスレッドのスタックに使用されます。この値を増やすと、スレッドの数を増やさないのであれば個々のスレッドでより大きなスタックが使用でき、あるいはより多くのスレッドを使用できるようになります。このパラメータは 64 ビットカーネルでのみ設定できます。64 ビットカーネルは、デフォルトでスタックサイズに 24K バイトを使用します。

このパラメータは、パッチ 106541-04 が適用された Solaris 7 リリース、Solaris 7 5/99 リリース、および Solaris 8 リリースで使用できます。

データ型

符号なし long

デフォルト

64 ビットカーネルでは 2G バイト

32 ビットカーネルでは 512M バイト

範囲

64 ビットカーネルでは 512M バイトから 24G バイト

32 ビットカーネルでは 512M バイト

単位

M バイト

動的か

いいえ

検査

なし

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

スレッドを増やしたい場合

コミットレベル

変更の可能性あり

仮想端末

pt_cnt (Solaris 7 およびそれ以前のリリース)

説明

再構成ブートで作成する /dev/pts (telnetrlogin でネットワークログインに使用される仮想端末デバイス) エントリの数。このパラメータにより、ネットワークを介して同時にログインできるユーザー数が、pt_cnt の値に制限されます。追加のデバイスノードを作成するためには、/etc/system ファイルを変更した後で再構成ブート (boot -r) を行う必要があります。

データ型

符号付き整数

デフォルト

48

範囲

0 から maxpid

単位

ログイン / ウィンドウ

動的か

いいえ

検査

なし。値が過度に大きすぎると、システムがハングします。

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

必要な数のユーザーがシステムにログインできない場合

コミットレベル

変更の可能性あり

Sun4u 特有

enable_grp_ism (Solaris 2.6 リリース)

説明

SHARE_MMU フラグを設定して接続された System V Shared Memory の共有メモリー Translation Setaside Buffer (TSB) 機能を有効にします。このパラメータは、パッチ 105181-05 以降がインストールされた Solaris 2.6 リリースで利用できます。Solaris 7 リリースからはこのパラメータ名は削除されましたが、システムはデフォルトでこの機能を実装します。

データ型

符号付き整数

デフォルト

0

範囲

0 (無効)、1 (有効)

動的か

いいえ

検査

なし

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

SHARE_MMU フラグを設定して接続された System V Shared Memory を使用する場合に有効にする

コミットレベル

変更の可能性あり