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

一般的なファイルシステム

ncsize

説明

ディレクトリ名ルックアップキャッシュ (DNLC) のエントリ数。このパラメータは、UFS や NFS が、解決されたパス名の要素をキャッシュするときに使用します。

Solaris 8 6/00 リリースから、DNLC には、ネガティブルックアップ情報もキャッシュされます。つまり、名前がキャッシュにない場合は、その名前がキャッシュされます。

データ型

符号付き整数

デフォルト

4 × (v.v_proc + maxusers) + 320

範囲

0 から MAXINT

単位

DNLC のエントリ

動的か

いいえ

検査

しない。値を増やすと、ファイルシステムのアンマウントに必要な時間が増えます。これは、アンマウントプロセスでそのファイルシステムのエントリをキャッシュから削除する必要があるためです。

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

Solaris 8 6/00 より前のリリースでは、キャッシュが小さすぎるかどうかを判定するのは困難でした。しかし、kstat -n ncstats から返されるエントリ数を調べることにより、これを推定することが可能になりました。システムの負荷やファイルアクセスのパターンに較べこの値が大きいように思われる場合は、DNLC のサイズに原因があるかもしれません。

Solaris 8 6/00 リリース以降では、kstat -n dnlcstats を使用して、DNLC が小さすぎるために DNLC からエントリが削除されたことを知ることができます。pick_heuristicpick_last の合計は、キャッシュが小さすぎるために再利用されたエントリ (そうでなければ有効であったはずのエントリ) の数を表します。

ncsize の値が大きすぎると、システムに直接的な影響があることに留意してください。システムは、ncsize の値に基づいて DNLC の一連のデータ構造体を割り当てるからです。32 ビットカーネルが動作しているシステムは ncsize に 36 バイトの構造体を、64 ビットカーネルが動作しているシステムは ncsize に 64 バイトの構造体をそれぞれ割り当てます。さらに、ufs_inodenfs:nfs_rnode が明示的に設定されていない場合は、この値が UFS や NFS にも影響を与えます。

コミットレベル

変更の可能性あり

rstchown

説明

chown(2) システム呼び出しの POSIX 挙動が有効かどうかを示します。POSIX 挙動は次のとおりです。

  • プロセスは、UID 0 で動作していない限りファイルの所有者を変更できない。

  • プロセスは、UID 0 で動作していない限り、ファイルのグループ所有権を、現在メンバーになっていないグループに変更することはできない。

データ型

符号付き整数

デフォルト

1 (POSIX 挙動が使用されている)

範囲

0 = POSIX 挙動が有効ではない、1 = POSIX 挙動が使用されている

単位

切り替え (オン/オフ)

動的か

はい

検査

なし

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

POSIX 挙動が適切でない場合。POSIX 挙動をオフにすると、さまざまなセキュリティホールの可能性が出てくる点に留意してください。さらに、ユーザーがファイルの所有権を別のユーザーに変更する可能性も生じます。その場合は、新たに所有者になったユーザーかシステム管理者の介入なしにはそのファイルの所有権を元に戻せません。

コミットレベル

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

segkpsize

説明

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

データ型

符号なし long

デフォルト

64 ビットカーネルの場合は 2G バイト

32 ビットカーネルの場合は 512M バイト

範囲

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

32 ビットカーネルの場合は 512M バイト

単位

M バイト

動的か

いいえ

検査

値が最小値と最大値 (64 ビットシステムの場合は 512M バイトと 24G バイト) と比較され、この範囲にない場合、2G バイトにリセットされ、それを表すメッセージが表示されます。

キャッシュの作成で実際に使用されるサイズは、制約チェックの後で segkpsize に指定されている値か、物理メモリーの 50% のうち、小さい方です。

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

システムで多数のプロセスをサポートする場合は、このステップが必要です (他のステップも必要)。物理メモリーが 1G バイト以上あると想定すると、デフォルトサイズの 2G バイトで、87,000 以上のカーネルスレッドに対し 24K バイトのスタックを作成できます。64 ビットカーネルのスタックサイズは、プロセスが 32 ビットプロセスでも 64 ビットプロセスでも同じです。これより大きな数が必要な場合は、物理メモリーが十分にあれば segkpsize を増やすことができます。

コミットレベル

変更の可能性あり

変更履歴

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

dnlc_dir_enable

説明

大きなディレクトリキャッシュを可能にします。

データ型

符号なし整数

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

動的か

はい。しかし、このチューニング可能パラメータを動的に変更してはいけません。これが無効になっていれば有効に、有効になっていれば無効にすることはできますが、このパラメータを有効にし、無効にし、再び有効にすると、ディレクトリキャッシュが最新の状態を表さないことがあります。

検査

なし

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

ディレクトリキャッシュ機能に既知の問題はありませんが、何らかの問題が発生した場合は、dnlc_dir_enable を 0 に設定してキャッシュを無効にしてください。

コミットレベル

変更の可能性あり

dnlc_dir_min_size

説明

1 つのディレクトリに対してキャッシュする前の最小のエントリ数

データ型

符号なし整数

デフォルト

40

範囲

0 から MAXUINT (無制限)

単位

動的か

はい。いつでも変更できます。

検査

なし

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

小さいディレクトリのキャッシュにおいてパフォーマンスに問題がある場合は、dnlc_dir_min_size を増やします。個々のファイルシステムに、キャッシングディレクトリの独自の範囲限度があることもある点に留意してください。たとえば、UFS ではディレクトリの最小は ufs_min_dir_cache バイトです (1 エントリ当たり 16 バイトとして、およそ 1024 エントリ)。

コミットレベル

変更の可能性あり

dnlc_dir_max_size

説明

1 つのディレクトリに対してキャッシュする最大のエントリ数

データ型

符号なし整数

デフォルト

MAXUINT (無制限)

範囲

0 から MAXUINT

動的か

はい。いつでも変更できます。

検査

なし

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

大きなディレクトリにおいてパフォーマンスに問題がある場合は、dnlc_dir_max_size を減らします。

コミットレベル

変更の可能性あり