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

NFS モジュールのパラメータ

ここでは、NFS カーネルモジュールに関連するパラメータについて説明します。

nfs:nfs3_pathconf_disable_cache

説明

NFS バージョン 3 でマウントされたファイルシステムの pathconf(2) 情報をキャッシングするかどうかを制御します。

データ型

整数 (32 ビット)

デフォルト

0 (キャッシングを有効にする)

範囲

0 (キャッシングを有効にする)、1 (キャッシングを無効にする)

単位

ブール値

動的か

はい

検査

なし

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

pathconf 情報はファイルごとにキャッシュされます。しかし、サーバーが特定ファイルの情報を動的に変更する可能性がある場合は、このパラメータを使用してキャッシングを無効にします。これは、クライアントがそのキャッシュエントリを検証する方法がないためです。

安定性レベル

発展中

nfs:nfs_allow_preepoch_time

説明

タイムスタンプが正しくなかったり「負」であるファイルをクライアントから表示できるようにするかどうかを制御します。

従来、NFS クライアントも NFS サーバーも、返されるファイルの時間範囲を、これらの属性を使用してチェックすることはありませんでした。受信するタイムスタンプの値は符号なしの 32 ビット long であるため、すべての値が有効だったからです。

しかし、32 ビットの Solaris リリースが動作しているシステムでは、タイムスタンプの値が符号付きの 32 ビット long であるため、タイムスタンプが 1970 年 1 月 1 日より前の表示 (つまり「昔」の) になっていることがあります。

64 ビットの Solaris リリースが動作しているシステムでの問題は、これとは多少異なります。64 ビットの Solaris リリースでは、タイムスタンプ値が符号付きの 64 ビット long であるため、時刻フィールドがフルの 32 ビットの時刻を表しているのか、時刻フィールドが負の時刻、つまり、1970 年 1 月 1 日より前を表しているのかを判別できません。

32 ビットから 64 ビットに変換するときに時刻値に符号を付けるべきかどうかを決定することはできません。つまり、時刻値が本当に負数を表している場合は、時刻値に符号を付ける必要がありますし、本当にフルの 32 ビット時刻値を表している場合は、符号を付けるべきではありません。この問題は、フルの 32 ビット時刻値を無効にすることによって解決できます。

データ型

整数 (32 ビット)

デフォルト

0 (32 ビットのタイムスタンプを無効にする)

範囲

0 (32 ビットのタイムスタンプを無効にする) か、1 (32 ビットのタイムスタンプを有効にする)

単位

ブール値

動的か

はい

検査

なし

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

「正常な」操作が行われていても、ファイルによっては、タイムスタンプ値がはるかに離れた将来や過去の日付に設定されることがあります。NFS でマウントされたファイルシステムを使用してこれらのファイルにアクセスすることが望ましい場合は、このパラメータを 1 にすれば、タイムスタンプ値をチェックなしで受け取ることができます。

安定性レベル

発展中

nfs:nfs_cots_timeo

説明

トランスポートプロトコルとして TCP などの接続型トランスポートを使用している、NFS バージョン 2 でマウントされたファイルシステムの、デフォルトの RPC タイムアウトを制御します。

データ型

符号付き整数 (32 ビット)

デフォルト

600 (60 秒)

範囲

0 から 2 31 - 1

単位

10 分の 1 秒

動的か

はい。ただし、ファイルシステムの RPC タイムアウトは、ファイルシステムのマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからファイルシステムをアンマウントし、再びマウントします。

検査

なし

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

TCP では、要求と応答が適切に転送されるよう、機能します。しかし、特に遅いネットワークにおいて往復時間が非常に長くなると、NFS バージョン 2 のクライアントがタイムアウトになってしまう可能性があります。

クライアントが無用にタイムアウトしてしまうことを防ぐには、このパラメータを増やします。ただし、値の範囲が非常に広いため、この値を大きくしすぎると、実際には再転送が必要なのにその状況が長い間検出されないおそれがあります。

安定性レベル

発展中

nfs:nfs3_cots_timeo

説明

トランスポートプロトコルとして TCP などの接続型トランスポートを使用している、NFS バージョン 3 でマウントされたファイルシステムの、デフォルトの RPC タイムアウトを制御します。

データ型

符号付き整数 (32 ビット)

デフォルト

600 (60 秒)

範囲

0 から 231 - 1

単位

10 分の 1 秒

動的か

はい。ただし、ファイルシステムの RPC タイムアウトは、ファイルシステムのマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからファイルシステムをアンマウントし、再びマウントします。

検査

なし

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

TCP では、要求と応答が適切に転送されるよう機能します。しかし、特に遅いネットワークにおいて往復時間が非常に長くなると、NFS バージョン 3 のクライアントがタイムアウトになってしまう可能性があります。クライアントが無用にタイムアウトしてしまうことを防ぐには、このパラメータを増やします。ただし、値の範囲が非常に広いため、この値を大きくしすぎると、実際には再転送が必要なのにその状況が長い間検出されないおそれがあります。

安定性レベル

発展中

nfs:nfs_do_symlink_cache

説明

NFS バージョン 2 でマウントされたファイルシステムに対してシンボリックリンクファイルの内容をキャッシュするかどうかを制御します。

データ型

整数 (32 ビット)

デフォルト

1 (キャッシングを有効にする)

範囲

0 (キャッシングを無効にする)か、1 (キャッシングを有効にする)

単位

ブール値

動的か

はい

検査

なし

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

サーバーが、シンボリックリンクファイルの内容を変更してもそのファイルの更新タイムスタンプを更新しない場合や、タイムスタンプの精度が粗すぎる場合には、シンボリックリンクファイルの内容が変更されても、クライアントにはその変更が長い間見られないことがあります。その場合には、このパラメータを使用してシンボリックリンクの内容のキャッシングを無効にすれば、クライアントで動作しているアプリケーションで変更をただちに見ることができます。

安定性レベル

発展中

nfs:nfs3_do_symlink_cache

説明

NFS バージョン 3 でマウントされたファイルシステムに対してシンボリックリンクファイルの内容をキャッシュするかどうかを制御します。

データ型

整数 (32 ビット)

デフォルト

1 (キャッシングを有効にする)

範囲

0 (キャッシングを無効にする)か、1 (キャッシングを有効にする)

単位

ブール値

動的か

はい

検査

なし

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

サーバーが、シンボリックリンクファイルの内容を変更してもそのファイルの更新タイムスタンプを更新しない場合や、タイムスタンプの精度が粗すぎる場合には、シンボリックリンクファイルの内容が変更されても、クライアントにはその変更が長い間見られないことがあります。その場合には、このパラメータを使用してシンボリックリンクの内容のキャッシングを無効にすれば、クライアントで動作しているアプリケーションで変更をただちに見ることができます。

安定性レベル

発展中

nfs:nfs_dynamic

説明

UDP などのコネクションレストランスポートを使用する、NFS バージョン 2 でマウントされたファイルシステムに対し、「動的再転送」と呼ばれる機能を有効にするかどうかを制御します。この機能は、サーバーの応答時間を監視し、RPC タイムアウトと読み取り / 書き込みの転送サイズを調整することによって、再転送の回数を減らそうとするものです。

データ型

整数 (32 ビット)

デフォルト

1 (有効)

範囲

0 (無効) か 1 (有効)

動的か

はい。ただし、このパラメータは、ファイルシステムごとにマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

なし

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

サーバーの応答やネットワークの負荷が急激に変動する状況では、動的再転送の機能により RPC タイムアウトの回数が不当に増えたり、読み取り/書き込みの転送サイズが不必要に小さくなったりすることがあります。この機能を無効にすると、スループットは向上するかもしれませんが、おそらくサーバーの応答やネットワークの負荷により急激な変動が目立つようになります。

安定性レベル

発展中

nfs:nfs3_dynamic

説明

UDP などのコネクションレストランスポートを使用する、NFS バージョン 3 でマウントされたファイルシステムに対し、「動的再転送」と呼ばれる機能を有効にするかどうかを制御します。この機能は、サーバーの応答時間を監視し、RPC タイムアウトと読み取り / 書き込みの転送サイズを調整することによって、再転送の回数を減らそうとするものです。

データ型

整数 (32 ビット)

デフォルト

0 (有効)

範囲

0 (無効) か 1 (有効)

単位

ブール値

動的か

はい。ただし、このパラメータは、ファイルシステムごとにマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

なし

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

サーバーの応答やネットワークの負荷が急激に変動する状況では、動的再転送の機能により RPC タイムアウトの回数が不当に増えたり、読み取り/書き込みの転送サイズが不必要に小さくなったりすることがあります。この機能を無効にすると、スループットは向上するかもしれませんが、おそらくサーバーの応答やネットワークの負荷により急激な変動が目立つようになります。

安定性レベル

発展中

nfs:nfs_lookup_neg_cache

説明

NFS バージョン 2 でマウントされたファイルシステムに対し、ネガティブ名前キャッシュを使用するかどうかを制御します。このネガティブ名前キャッシュを使用すると、ルックアップされたファイル名が存在しない場合には、そのファイル名が記録されます。このキャッシュは、存在しないことがすでにわかっているファイル名のルックアップ要求をネットワークを介して繰り返し行うのを避けるためにあります。

データ型

整数 (32 ビット)

デフォルト

1 (有効)

範囲

0 (無効) か 1 (有効)

単位

ブール値

動的か

はい

検査

なし

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

このキャッシュが正しく機能するためには、ネガティブエントリが使用前に厳密に検証されなければなりません。この整合性機構は、読み取り専用でマウントされたファイルシステムには若干緩和されています。つまり、サーバー上のファイルシステムが変更されないか、変更されてもゆっくりであり、そのような変更はクライアントにゆっくり伝達されても問題がないとみなされるためです。この場合は、この整合性機構が通常の属性キャッシュ機構になります。

読み取り専用でクライアントにマウントされているファイルシステムがサーバーで変更されたら、その変更をクライアントでただちに見る必要ある場合は、このパラメータを使用してネガティブキャッシュを無効にします。

安定性レベル

発展中

nfs:nfs3_lookup_neg_cache

説明

NFS バージョン 3 でマウントされたファイルシステムに対し、ネガティブ名前キャッシュを使用するかどうかを制御します。このネガティブ名前キャッシュを使用すると、ルックアップされたファイル名が存在しない場合には、そのファイル名が記録されます。このキャッシュは、存在しないことがすでにわかっているファイル名のルックアップ要求をネットワークを介して繰り返し行うのを避けるためにあります。

データ型

整数 (32 ビット)

デフォルト

1 (有効)

範囲

0 (無効) か 1 (有効)

単位

ブール値

動的か

はい

検査

なし

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

このキャッシュが正しく機能するためには、ネガティブエントリが使用前に厳密に検証されなければなりません。この整合性機構は、読み取り専用でマウントされたファイルシステムには若干緩和されています。つまり、サーバー上のファイルシステムが変更されないか、変更されてもゆっくりであり、そのような変更はクライアントにゆっくり伝達されても問題がないとみなされるためです。この場合は、この整合性機構が通常の属性キャッシュ機構になります。

読み取り専用でクライアントにマウントされているファイルシステムがサーバーで変更されたら、その変更をクライアントでただちに見る必要ある場合は、このパラメータを使用してネガティブキャッシュを無効にします。

安定性レベル

発展中

nfs:nfs_max_threads

説明

NFS バージョン 2 クライアントの非同期入出力を行うカーネルスレッドの数を制御します。NFS は RPC に基づくものであり、RPC はもともと同期して動作する機能であるため、呼び出し側のスレッドと非同期に NFS 操作を行うには、個別の実行コンテキストが必要です。

非同期に実行できる操作には、先読み read、先読み readdir の readdir、putpage 要求と pageio 要求の書き込みがあります。

データ型

整数 (16 ビット)

デフォルト

8

範囲

0 から 215 - 1

単位

スレッド

動的か

はい。ただし、このパラメータは、ファイルシステムごとにマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからファイルシステムをアンマウントし、再びマウントします。

検査

なし

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

ある時点で存在する同時入出力操作の数を増やしたり、減らしたりする場合には、このパラメータを変更します。たとえば、帯域幅が非常に狭いネットワークでは、NFS クライアントによるネットワークの過負荷を防止するためにこの値を減らすことがあります。あるいは、ネットワークの帯域幅が非常に広く、クライアントとサーバーが両方とも十分なリソースを備えている場合は、ネットワークの帯域幅やクライアントとサーバーのリソースをより有効に使用するためにこの値を増やすことができます。

安定性レベル

変更の可能性あり

nfs:nfs3_max_threads

説明

NFS バージョン 3 クライアントの非同期入出力を行うカーネルスレッドの数を制御します。NFS は RPC に基づくものであり、RPC はもともと同期して動作する機能であるため、呼び出し側のスレッドと非同期に NFS 操作を行うには、個別の実行コンテキストが必要です。

非同期に実行できる操作には、先読み read、先読み readdir の readdir、putpage 要求と pageio 要求の書き込み、およびコミットがあります。

データ型

整数 (16 ビット)

デフォルト

8

範囲

0 から 215 - 1

単位

スレッド

動的か

はい。ただし、このパラメータは、ファイルシステムごとにマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからファイルシステムをアンマウントし、再びマウントします。

検査

なし

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

ある時点で存在する同時入出力操作の数を増やしたり、減らしたりする場合には、このパラメータを変更します。たとえば、帯域幅が非常に狭いネットワークでは、NFS クライアントによるネットワークの過負荷を防止するためにこの値を減らすかもしれません。あるいは、ネットワークの帯域幅が非常に広く、クライアントとサーバーが両方とも十分なリソースを備えている場合は、ネットワークの帯域幅やクライアントとサーバーのリソースをより有効に使用するためにこの値を増やすことができます。

安定性レベル

変更の可能性あり

nfs:nfs_nra

説明

ファイルの順次アクセスが見つかった時に NFS バージョン 2 クライアントがキューに入れる先読み操作の数を制御します。これらの先読み操作では、並行性が高まり、読み取りのスループットが向上します。個々の先読み要求は、通常、ファイルデータの 8192 バイトに対するものです。

データ型

整数 (32 ビット)

デフォルト

4

範囲

0 から 231 - 1

単位

先読み要求

動的か

はい

検査

なし

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

特定のファイルに対してある時点で存在する先読み要求の数を増やしたり、減らしたりする場合は、このパラメータを変更します。たとえば、ネットワークの帯域幅が非常に狭い場合やクライアントのメモリーが少ない場合は、NFS クライアントによるネットワークの過負荷やシステムメモリーの使いすぎを防止するために、この値を減らすことができます。あるいは、ネットワークの帯域幅が非常に広く、クライアントとサーバーが両方とも十分なリソースを備えている場合は、ネットワークの帯域幅やクライアントとサーバーのリソースをより有効に使用するためにこの値を増やすことができます。

安定性レベル

変更の可能性あり

nfs:nfs3_nra

説明

ファイルの順次アクセスが見つかった時に NFS バージョン 3 クライアントがキューに入れる先読み操作の数を制御します。これらの先読み操作では、並行性が高まり、読み取りのスループットが向上します。個々の先読み要求は、通常、ファイルデータの 32,768 バイトに対するものです。

データ型

整数 (32 ビット)

デフォルト

4

範囲

0 から 231 - 1

単位

先読み要求

動的か

はい

検査

なし

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

特定のファイルに対してある時点で存在する先読み要求の数を増やしたり、減らしたりする場合には、このパラメータを変更します。たとえば、ネットワークの帯域幅が非常に狭い場合やクライアントのメモリーが少ない場合は、NFS クライアントによるネットワークの過負荷やシステムメモリーの使いすぎを防止するために、この値を減らすことができます。あるいは、ネットワークの帯域幅が非常に広く、クライアントとサーバーが両方とも十分なリソースを備えている場合は、ネットワークの帯域幅やクライアントとサーバーのリソースをより有効に使用するためにこの値を増やすことができます。

安定性レベル

変更の可能性あり

nfs:nrnode

説明

NFS クライアントの rnode キャッシュのサイズを制御します。

NFS バージョン 2 クライアントでも、バージョン 3 クライアントでも使用される rnode キャッシュは、NFS クライアント上のファイルを記述する中心的なデータ構造体です。このデータ構造体には、サーバーのファイルを識別するファイルハンドルや、NFS クライアントがサーバーへのネットワーク呼び出しを避けるために使用するさまざまなキャッシュへのポインタが含まれています。個々の rnodevnode と 1 対 1 で対応しています。vnode には、ファイルデータがキャッシュされます。

NFS クライアントは、キャッシュされたデータやメタデータが破棄されないように、最小限の rnode を保持しようとします。rnode の再利用や解放が行われると、キャッシュされたデータやメタデータは破棄されなければなりません。

データ型

整数 (32 ビット)

デフォルト

このパラメータのデフォルト値は 0 です。これは、nrnode の値に ncsize パラメータの値が設定されるべきであることを示しています。実際、nrnode の値が正でないと、nrnode には ncsize が設定されます。

範囲

1 から 231 - 1

単位

rnode

動的か

いいえ。この値を変更するには、パラメータを /etc/system ファイルに追加するか、そのパラメータを変更し、システムを再起動する必要があります。

検査

rnode キャッシュが使用可能なメモリーの 25% を超えないような最大値をシステムは強制します。

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

rnode の作成や破棄は動的に行われるため、システムは、システムのメモリーの要求や同時にアクセスされるファイルの数が増えるに従って、キャッシュのサイズを自動的に調整して、nrnode サイズキャッシュを決定する傾向があります。しかし、アクセスするファイルの組み合わせが前もって予測できる場合など、状況によっては、nrnode の値を設定する方がよいこともあります。たとえば、NFS クライアントが少数の非常に大きなファイルにアクセスしている場合は、nrnode の値に小さな数を設定すれば、システムメモリーには、rnode の代りにファイルデータをキャッシュできます。あるいは、クライアントが多数の小さなファイルにアクセスしている場合は、nrnode に十分大きな値を設定すれば、ファイルメタデータの格納を最適化して、メタデータを求めるネットワーク呼び出しの回数を減らすことができます。

nrnode の値に 1 を設定すると、rnode キャッシュは事実上無効になります (ただし、この方法はお勧めできません)。この場合、クライアントは rnode を 1 つしかキャッシュしないため、それが頻繁に再使用されます。

安定性レベル

発展中

nfs:nfs_shrinkreaddir

説明

以前の一部の NFS サーバーでは、NFS バージョン 2 の READDIR 要求で 1024 バイトより大きいディレクトリ情報を求めるものが正しく処理されないことがありました。これは、サーバーの実装にバグがあったためです。このパラメータは、NFS バージョン 2 クライアントでの対処方法を含んでいます。

このパラメータを有効にすると、クライアントは、1024 バイトより大きいディレクトリ情報を求める READDIR 要求を生成しません。このパラメータを無効にすると、送信されるサイズは、getdents(2) システム呼び出しか NFS_MAXDATA (8192 バイト)で渡されるサイズのうち小さい方に設定されます。

データ型

整数 (32 ビット)

デフォルト

0 (無効)

範囲

0 (無効) か 1 (有効)

単位

ブール値

動的か

はい

検査

なし

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

古い NFS バージョン 2 のみのサーバーが使用され、ディレクトリの読み取りで相互運用性に問題がある場合は、このパラメータの値を調べてください。このパラメータを有効にすると、ディレクトリを読み取るアプリケーションのパフォーマンスが多少低下することがあります。

安定性レベル

発展中

nfs:nfs_write_error_interval

説明

NFS クライアントで見られる書き込みエラー (ENOSPCEDQUOT) のロギング間隔を制御します。このパラメータは、NFS バージョン 2 と 3 のクライアントに適用されます。

データ型

long 整数 (32 ビットプラットフォームでは 32 ビット、64 ビットプラットフォームでは 64 ビット)

デフォルト

5 秒

範囲

32 ビットプラットフォームでは 0 から 231 - 1、64 ビットプラットフォームでは 0 から 2 63 - 1

単位

動的か

はい

検査

なし

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

クライアントによってロギングされるメッセージ量に応じてこのパラメータの値を増減します。たとえば、サーバーのファイルシステムが満杯で頻繁に使用されているときに出力される「out of space」メッセージを減らす場合は、このパラメータの値を増やします。

安定性レベル

発展中

nfs:nfs_write_error_to_cons_only

説明

NFS の書き込みエラーをシステムコンソールと syslog にロギングするか、システムコンソールだけにロギングするかを制御します。このパラメータは、NFS バージョン 2 と 3 のクライアントに適用されます。

データ型

整数 (32 ビット)

デフォルト

0 (システムコンソールと syslog)

範囲

0 (システムコンソールと syslog) か、1 (システムコンソール)

単位

ブール値

動的か

はい

検査

なし

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

syslogd(1M) デーモンによってロギングされるメッセージを含むファイルシステムがいっぱいになるのを防ぐには、このパラメータの値を調べます。このパラメータを有効にすると、メッセージはシステムコンソールに出力されるだけで、syslog メッセージファイルにはコピーされません。

安定性レベル

発展中

nfs:nfs_disable_rddir_cache

説明

NFS バージョン 2 の READDIR 要求、および NFS バージョン 3 の READDIRREADDIRPLUS 要求からの応答を格納するキャッシュの使用を制御します。このキャッシュを使用すると、ディレクトリ情報を取得するためにサーバーを繰り返し呼び出すことがなくなります。

データ型

整数 (32 ビット)

デフォルト

0 (キャッシングを有効にする)

範囲

0 (キャッシングを有効にする) か、1 (キャッシングを無効にする)

単位

ブール値

動的か

はい

検査

なし

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

ファイルやディレクトリがサーバーに作成されたりサーバーから削除されてもサーバーがディレクトリの変更時刻を更新しないために、相互運用性に問題がある場合は、このパラメータの値を調べます。ディレクトリにファイルを追加しても新しい名前が表示されなかったり、ディレクトリからファイルを削除しても古い名前が削除されない場合は、この問題があります。

このパラメータは、NFS バージョン 2 や 3 でマウントされたファイルシステムのキャッシングに適用されます。このパラメータは NFS でマウントされたすべてのファイルシステムに適用されるため、キャッシングをファイルシステムごとに有効にしたり、無効にしたりすることはできません。

安定性レベル

発展中

nfs:nfs3_bsize

説明

NFS バージョン 3 クライアントによって使用される論理ブロックサイズを制御します。このブロックサイズは、クライアントが入出力を行うときにサーバーに対して読み取りや書き込みを行うデータ量を表します。

データ型

符号なし整数 (32 ビット)

デフォルト

32,768 (32K バイト)

範囲

0 から 231 - 1

単位

バイト

動的か

はい。ただし、ファイルシステムのブロックサイズは、ファイルシステムのマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

なし。このパラメータの設定が小さすぎたり、大きすぎたりすると、システムの動作が異常になることがあります。このパラメータには、そのプラットフォームの PAGESIZE より小さい値を設定しないでください。さらに、このパラメータの値が大きすぎると、メモリー割り当てが許可されるのを待つのでシステムがハングすることがあります。

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

データ転送サイズの最大値を変更したい場合は、このパラメータの値を調べてください。このパラメータは、nfs3_max_transfer_size パラメータと連携して変更してください。転送サイズを増やしたい場合は両方のパラメータを増やしますが、転送サイズを減らしたい場合は、通常、このパラメータを減らすだけで十分です。

安定性レベル

変更の可能性あり

nfs:nfs_async_clusters

説明

NFS バージョン 2 クライアントによって生成される非同期要求の組み合わせを制御します。非同期要求には、read-ahead、putpage、pageio、readdir-ahead という 4 つのタイプがあります。クライアントは、これらのタイプをラウンドロビンに処理し、特定の操作タイプだけを優遇することがないようにします。

しかし、書き込みの一括化 (書き込みをまとめる) などの NFS バージョン 2 サーバーの機能の中には、既存の NFS バージョン 2 クライアントの特定の動作に依存するものがあります。特に、この機能では、クライアントが複数の WRITE 要求をほぼ同時に送信することに依存します。キューから要求を 1 度に 1 つずつ取り出したのでは、クライアントのパフォーマンスを高めるために設けられたこのサーバー機能が生かされません。

したがって、タイプを変更する前に、送信される各タイプの要求数の制御にこのパラメータを使用します。

データ型

符号なし整数 (32 ビット)

デフォルト

1

範囲

0 から 231 - 1

単位

非同期要求

動的か

はい。ただし、ファイルシステムに対するクラスタ設定は、ファイルシステムのマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

なし。ただし、このパラメータに 0 を設定すると、キューに入れられている特定タイプの要求がすべて処理されてから、次のタイプが処理されます。これによって、アルゴリズムの公平性の部分が実質的に無効にされます。

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

あるタイプについて次のタイプへ移行する前に生成される非同期操作の数を増やす場合は、このパラメータを変更します。これによって、クライアントからの操作のクラスタに依存するサーバーの機能が生かされる場合があります。

安定性レベル

変更の可能性あり

nfs:nfs3_async_clusters

説明

NFS バージョン 3 クライアントによって生成される非同期要求の組み合わせを制御します。非同期要求には、read-ahead、putpage、pageio、readdir-ahead、commit という 5 つのタイプがあります。クライアントは、これらのタイプをラウンドロビンに処理し、特定の操作タイプだけを優遇することがないようにします。

しかし、書き込みの一括化 (書き込みをまとめる) などの NFS バージョン 3 サーバーの機能の中には、既存の NFS バージョン 3 クライアントの一定の動作に依存するものがあります。特に、この機能では、クライアントが複数の WRITE 要求をほぼ同時に送信することに依存します。キューから要求を 1 度に 1 つずつ取り出したのでは、クライアントのパフォーマンスを高めるために設けられたこのサーバー機能が生かされません。

したがって、タイプを変更する前に、送信される各タイプの要求数の制御に、このパラメータを使用します。

データ型

符号なし整数 (32 ビット)

デフォルト

1

範囲

0 から 231 - 1

単位

非同期要求

動的か

はい。ただし、ファイルシステムに対するクラスタ設定は、ファイルシステムのマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

なし。ただし、このパラメータに 0 を設定すると、キューに入れられている特定タイプの要求がすべて処理されてから、次のタイプが処理されます。これによって、アルゴリズムの公平性の部分が実質的に無効にされます。

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

あるタイプについて次のタイプへ移行する前に生成される非同期操作の数を増やす場合は、このパラメータを変更します。これによって、クライアントからの操作のクラスタに依存するサーバーの機能が生かされる場合があります。

安定性レベル

変更の可能性あり

nfs:nfs_async_timeout

説明

非同期の入出力要求を実行するスレッドが、終了するまでにどのくらい何もせず休眠するかを表す時間を制御する。実行する要求がないと各スレッドは休眠状態に入ります。このタイマーが切れる前に新しい要求が到着しないと、スレッドは休眠から起きて終了します。新しい要求が到着すると、スレッドは休眠から起きて要求を実行し、すべての要求を処理すると、次の要求が到着するかタイマーが切れるまで再び休眠に入ります。

データ型

整数 (32 ビット)

デフォルト

6000 (1 分を 60 秒 * 100Hz として表す)

範囲

0 から 2 31 - 1

単位

Hz (一般にクロックは 100Hz で動作する)

動的か

はい

検査

なし。ただし、このパラメータに正以外の値を設定すると、スレッドが、自身が処理する要求がキューになくなるとすぐに終了します。

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

システムでのアプリケーションの動作を正確に把握し、非同期入出力要求の割合を予測できる場合は、次のどちらかの方法によってこのパラメータをチューニングすることで、パフォーマンスをある程度最適化することができます。

  • スレッドの終了までの時間を短くして、カーネルリソースの解放を早くする。

  • スレッドの終了までの時間を長くして、スレッドの作成や破棄にかかるオーバーヘッドを減らす。

安定性レベル

発展中

nfs:nacache

説明

NFS クライアント上のファイルアクセスキャッシュにアクセスするハッシュキューの数をチューニングします。ファイルアクセスキャッシュは、ユーザーがアクセスしようとするファイルに関する、ユーザーの持つファイルアクセス権を格納します。キャッシュ自体は動的に割り当てられますが、それへのインデックスに使用されるハッシュキューは静的に割り当てられます。このアルゴリズムでは、アクティブファイルごとに 1 つのアクセスキャッシュエントリが、ハッシュバケットごとにこれらの 4 つのアクセスキャッシュエントリがあるものとみなします。したがって、このパラメータの値には、デフォルトで nrnode パラメータの値が設定されます。

データ型

整数 (32 ビット)

デフォルト

このパラメータのデフォルトの設定は 0 です。これは、nacache の値に nrnode パラメータの値が設定されるべきであることを示しています。

範囲

1 から 231 - 1

単位

アクセスキャッシュエントリ

動的か

いいえ。この値は、/etc/system ファイルにパラメータを追加するか、パラメータを変更し、その後システムをリブートすることによってのみ変更できます。

検査

なし。ただし、このパラメータに負の値を設定すると、システムは、おそらく、非常に多くのハッシュキューをシステムに割り当て、その間にハングします。

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

1 つのファイルごとに 1 つのアクセスキャッシュエントリがあるという基本的な前提が損われるおそれがある場合は、このパラメータの値を検討します。複数のユーザーが同じファイルにほぼ同時にアクセスするタイムシェアリングモードのシステムでは、このような状況になることがあります。このような場合には、予想されるアクセスキャッシュのサイズを増やすことが、キャッシュへのハッシュアクセスの効率性を保つ上で役立つことがあります。

安定性レベル

発展中

nfs:nfs3_jukebox_delay

説明

NFS バージョン 3 のクライアントが、前に出した要求に対して NFS3ERR_JUKEBOX エラーを受信してから、新しい要求を送信するまでにどのくらいの時間待つべきかを制御します。NFS3ERR_JUKEBOX エラーは、通常、何らかの理由でファイルが一時的に使用できないときにサーバーから返されます。このような状況は、通常、階層型記憶装置、CD やテープといったジュークボックスに関連しています。

データ型

long 整数 (32 ビットプラットフォームでは 32 ビット、64 ビットプラットフォームでは 64 ビット)

デフォルト

1000 (10 秒を 10 秒 * 100Hz で表す)

範囲

32 ビットプラットフォームでは 0 から 231 - 1

64 ビットプラットフォームでは 0 から 263 - 1

単位

Hz (一般にクロックは 100Hz で動作する)

動的か

はい

検査

なし

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

このパラメータの値を調べ、必要ならサーバーが示す動作に合わせて値を調整します。再送信を繰り返すことによるネットワークオーバーヘッドを減らすためにファイルを使用できる遅延を長くする場合は、この値を増やします。ファイルが使用可能になったことを検知する遅延を減らしたい場合は、この値を減らします。

安定性レベル

発展中

nfs:nfs3_max_transfer_size

説明

NFS バージョン 3 の READWRITEREADDIR、または READDIRPLUS 要求のデータ部分の最大サイズを制御します。このパラメータは、サーバーが返す要求の最大サイズとクライアントが生成する要求の最大サイズの両方を制御します。

データ型

整数 (32 ビット)

デフォルト

32, 768 (32K バイト)

範囲

0 から 231 - 1

単位

バイト

動的か

はい

検査

なし。ただし、サーバー側の最大転送サイズに 0 を設定すると、クライアントはおそらく、誤作動するか、単にサーバーに要求を送信しないかのどちらかになる可能性があります。

また、UDP トランスポート経由の NFS を使用する場合にも、転送サイズの最大値に制限があります。UDP は、データグラム当たり 64K バイトの「強い」制限があります。この 64DK バイトには、要求のデータ部分の他に RPC ヘッダーやその他の NFS 情報を含まなければなりません。この制限値が大きすぎると、UDP エラーのためにクライアントとサーバーの通信に問題が発生することがあります。

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

ネットワーク上を転送するデータのサイズをチューニングする場合は、このパラメータを変更します。このパラメータを変更する場合は、通常、これに合わせて nfs3_bsize パラメータを変更する必要があります。たとえば、ネットワーク上のデフォルト転送サイズを 8K バイトに減らす場合は、nfs3_max_transfer_sizenfs3_bsize パラメータの値を両方とも 8192 に変更して、それぞれで 8K バイトの読み取りまたは書き込みが行われ、複数の操作が行われることを防ぐことができます。あるいは、32K バイトを超える値に転送サイズ増やす場合は、これに合わせて nfs3_bsize も変更する必要があります。変更しないと、ネットワーク上の要求サイズは変わりません。

安定性レベル

変更の可能性あり