Sun NFS サーバーの調整

i ノードキャッシュの拡張

メモリー常駐の i ノードは、ファイルシステム内の実体の操作が行われるたびに使用されます。ディスクから読み取られた i ノードは、再び必要になるときのために、キャッシュされます。ufs_ninode は、アイドル状態のノードのリストを UNIX ファイルシステムが保持しようとするサイズです。ufs_ninode を 1 に設定することによって、10,000 のアイドルノードが保持されます。アイドルノードの数が ufs_ninode を超えると、アイドルノードを削除することによってメモリーの空き領域が確保されます。

DNLC キャッシュのエントリは、それぞれ i ノードキャッシュのエントリに対応しています。そのため、i ノードキャッシュのサイズを変更する場合は、DNLC キャッシュのサイズも変更してください。また、i ノードキャッシュの大きさは、最低でも DNLC キャッシュと同じ大きさにする必要があります。最高の性能を得るには、Solaris 2.4 から Solaris 8 のソフトウェア環境では DNLC キャッシュと同じ大きさにすることをお勧めします。

動作中のシステムで adb を使用して ufs_ninode を操作し、ただちにその結果を確認することができます。ufs_ninode の最大値は、i ノードが使用するカーネルメモリーの容量によって制限されます。この上限は maxusers = 2048 に対応しており、ncsize では 34906 になります。

カーネルメモリに割り当てられている容量は、sar -k を実行して調べます。

Solaris 2.5.1、2.6、7、8 オペレーティング環境では、ufs_ninode は、最低でも ncsize と同じ値になるように自動的に調整されます。ヒット率を高めるために ncsize を調整し、システムがデフォルトの ufs_ninodes 値を使用できるようにしてください。

Solaris 2.4 または 2.5 ソフトウェア環境において i ノードキャッシュを大きくする

i ノードキャッシュのヒット率が 90 %より低いか、DNLC からローカルディスクのファイル入出力負荷の調整要求が出された場合は、以下の操作を行います。

  1. i ノードキャッシュの大きさを大きくします。

  2. /etc/system ファイルの ufs_ninode を DNLC (ncsize) と同じ値に設定します。

    たとえば Solaris 2.4 ソフトウェア環境では、以下のように設定します。


    set ufs_ninode=5000

    i ノードキャッシュのデフォルト値は、ncsize と同じです。

    ufs_ninode (デフォルト値) = 17 * maxusers + 90


    注意 - 注意 -

    ncsize より小さな値を ufs_ninode に設定しないでください。ufs_ninode は、アクティブと非アクティブの i ノードの合計ではなく、非アクティブの i ノード数だけを制限します。


  3. システムを再起動します。