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

コミットレベル

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

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 を減らします。

コミットレベル

変更の可能性あり