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

一般的な入出力

maxphys

説明

物理入出力要求の最大サイズ。要求がこのサイズより大きいと、ドライバはこの要求を maxphys サイズの断片に分割します。個々のファイルシステムは独立して制限値を持つことが可能で、実際に独立した制限値を持ちます。

データ型

符号付き整数

デフォルト

126,976 (sun4m)、131,072 (sun4u)、57,344 (Intel)。ワイド転送をサポートする sd ドライバは 1,048,576 を使用します。ssd ドライバはデフォルトで 1,048,576 を使用します。

範囲

マシン固有のページサイズから MAXINT

単位

バイト

動的か

はい。しかし、多くのファイルシステムでは、ファイルシステムがマウントされるときに、この値がマウントポイントごとのデータ構造体に設定されます。ドライバによっては、デバイスがドライバ固有のデータ構造体に設定されるときに、この値が設定されます。

検査

なし

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

raw デバイスに対する入出力を大きな断片で行う場合。OLTP 操作を伴う DBMS では小さいサイズの入出力が頻繁に行われることに留意してください。その場合、maxphys を変更しても性能の向上は望めません。

UFS ファイルシステムに対して、64K バイトを超える大量のデータの読み取りや書き込みを一度に行う入出力を行う場合。ファイルシステムは、連続性が増すように最適化すべきです。たとえば、シリンダグループのサイズを大きくし、シリンダグループ当たりの i ノードの数を減らす、などです。UFS では、転送する最大の入出力サイズは 1M バイトに制限されます。

コミットレベル

変更の可能性あり

rlim_fd_max

説明

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 などのデーモンに便利です。

コミットレベル

変更の可能性あり

rlim_fd_cur

説明

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

データ型

符号付き整数

デフォルト

256

範囲

1 から MAXINT

単位

ファイル記述子

動的か

いいえ

検査

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

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

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

コミットレベル

変更の可能性あり

変更履歴

詳細は、rlim_fd_cur (Solaris 7 リリースおよびそれより前のリリース)を参照してください。