eDirectoryのパフォーマンスの改善

eDirectoryのパフォーマンスに最も大きく影響するのは、キャッシュの設定です。NDS 8の以前のバージョンでは、ブロックキャッシュ制限を指定することにより、eDirectoryがキャッシュに使用するメモリ量を制御することができました。デフォルトでは、8MBのRAMがキャッシュに使用されていました。

eDirectory 8.5では、ブロックキャッシュ制限およびエントリキャッシュ制限を指定できます。ブロックキャッシュは、NDS 8の以前のバージョンでも使用可能で、データベースの物理ブロックのみをキャッシュします。エントリキャッシュは、eDirectory 8.5の新機能で、データベースの論理エントリをキャッシュします。エントリをキャッシュすることにより、ブロックキャッシュからメモリ内にエントリをインスタンス化するためにかかる処理時間を削減できます。

この2つのキャッシュにはいくらか重複する部分がありますが、各キャッシュはそれぞれ異なる操作でのパフォーマンスを増大させるために設計されています。ブロックキャッシュは、更新操作で最も効果的です。エントリキャッシュは、名前解決など、エントリを読み込んでeDirectoryツリーをブラウズする操作で最も効果的です。

ブロックキャッシュとエントリキャッシュは両方とも、クエリのパフォーマンスを向上させます。ブロックキャッシュは、インデックス検索を高速化します。エントリキャッシュは、インデックスから参照されるエントリの呼び込みを高速化します。

eDirectory 8.5のデフォルト値を次に示します。


エントリキャッシュとブロックキャッシュでメモリを配分する

キャッシュ用に使用可能な全メモリが、エントリキャッシュとブロックキャッシュとで共用されます。デフォルトでは、均等に配分されます。NDS 8の以前のバージョンで使用可能であったブロックキャッシュ量を維持するには、eDirectoryの合計キャッシュサイズを2倍にする必要があります。LDIFインポートのパフォーマンスを向上させるためにキャッシュを使用する場合は、合計キャッシュサイズを2倍にするか、デフォルトのキャッシュ設定を変更します。デフォルトのキャッシュ設定を変更するには、「動的調整制限およびハードメモリ制限を設定する」を参照してください。

キャッシュ可能なブロック数およびエントリ数が多いほど、全体のパフォーマンスは向上します。大きなデータベースの場合には不可能ですが、データベース全体をエントリキャッシュおよびブロックキャッシュにキャッシュできれば理想的です。一般的に、ブロックキャッシュとDIBセットの比率ができるだけ1:1になるように設定します。エントリキャッシュについては、1:2または1:4の比率になるようにします。最適なパフォーマンスを得るために、これらの比率を上回るようにしてください。


デフォルトのキャッシュ設定を使用する

eDirectory 8.5には、キャッシュメモリの使用量を制御する方法として、動的調整制限とハードメモリ制限の2つの方法があります。どちらの方法も使用できますが、この2つは互いに排他的であるため同時に両方を使用することはできません。最後に使用した方法により、常に以前の設定が置き換えられます。


動的調整制限について

動的調整制限では、eDirectoryは他のプロセスによるメモリ消費量の増減に応じて、定期的にメモリ使用量を調整します。制限は、使用可能な物理メモリの割合として指定します。eDirectoryは、この割合を使用して、一定の間隔で新しいメモリ制限を再計算します。新しいメモリ制限は、その時点で使用可能な物理メモリの割合として算出されます。

割合とともに、しきい値として最大値および最小値も設定できます。しきい値はバイト数で指定し、eDirectoryがその値に調整します。しきい値は、使用するバイト数、または使用可能量として残すバイト数として指定できます。最小しきい値のデフォルトは16MBです。最大しきい値のデフォルトは、4GBです。

最小しきい値と最大しきい値による制限が矛盾する場合は、最小しきい値が優先されます。たとえば、次のような設定を指定したとします。

最小しきい値

8MB

使用する利用可能な物理メモリの割合

75

最大しきい値

10MBを使用可能量として維持する

eDirectoryがキャッシュ制限を調整するときに、使用可能な物理メモリが16MBあるとします。eDirectoryは、新しい制限値を12MBとして算出します。eDirectoryは、算出した新しい制限値が最小しきい値と最大しきい値の範囲内にあるかをチェックします。この例では、最大しきい値の設定により10MBを使用可能量として残しておく必要があるため、eDirectoryは制限値を6MBに設定します。しかし、最小しきい値は8MBであるため、eDirectoryは最終的に制限値を8MBに設定します。

動的調整制限では、間隔の長さも指定します。デフォルトの間隔は15秒です。間隔が短いほど、より最新の状態に基づいてメモリが使用されるようになります。ただし、割合の再計算によりメモリの割り当てと解放が発生するため、必ずしも間隔が短いほど良いわけではありません。


ハードメモリ制限について

ハードメモリ制限は、eDirectoryの以前のバージョンで、メモリ消費を制御するために使用されている方法です。次のいずれかの方法でハードメモリ制限を設定します。


キャッシュをクリーンアップする

NDS 8はトランザクションの整合性を維持するために、キャッシュ内に複数のバージョンのブロックとエントリを作成します。NDS 8の以前のバージョンでは、これらのブロックやエントリは不要になった場合も削除されませんでした。eDirectory 8.5では、バックグラウンドプロセスにより定期的にキャッシュがブラウズされ、古いバージョンが消去されます。これにより、キャッシュメモリの消費量が最小限に抑えられます。デフォルトのブラウズ間隔は15秒です。


動的調整制限およびハードメモリ制限を設定する

  1. _NDSDB.INIをテキストエディタで開きます。

    NetWare(R)では、このファイルはSYS:\NETWAREにあります。通常、Windows* NT*およびWindows 2000では、このファイルは\NOVELL\NDS\DIBFILESにあります。

  2. ファイルに該当する構文を追加します。


    表 132.

    コマンド 変数の説明 定義

    cache=cache_bytes

    使用する固定バイト数

    ハードメモリ制限を設定します。

    たとえば、8MBのハードメモリ制限を設定するには、「cache=8000000」と入力します。

    cache=cache_options

    複数のオプションを、カンマで区切り、任意の順序で指定できます。

    • DYN

      動的調整制限を設定します。

    • HARD

      ハードメモリ制限を設定します。

    • %:percentage

      使用する利用可能なメモリまたは物理メモリの割合。

    • AVAILまたはTOTAL

      ハードメモリ制限についてのみ、使用可能な物理メモリまたは合計物理メモリのどちらの割合かを指定します。

    • MIN:number_of_bytes

      最小バイト数。

    • MAX:number_of_bytes

      最大バイト数。

    • LEAVE:number_of_bytes

      使用可能量として残しておく最小バイト数。

    ハードメモリ制限または動的調整制限を設定します。

    たとえば、動的調整制限を使用可能メモリの75%に設定し、最小値を16MBに設定するには、「cache=DYN, %:75,MIN:16000000」と入力します。

    また、ハードメモリ制限を合計物理メモリの75%に設定し、最小値を16MBに設定するには、「cache=HARD,%:75,MIN:16000000」と入力します。

  3. (オプション) 動的調整制限の間隔を指定するには、次の行を追加します。

    cacheadjustinterval=number_of_seconds

  4. (オプション) エントリとブロックの古いバージョンをクリーンアップする間隔を指定するには、次の行を追加します。

    cachecleanupinterval=number_of_seconds

  5. (オプション) ブロックキャッシュとエントリキャッシュでのメモリ配分の割合を変更するには、次の行を追加します。

    blockcachepercent=percent

    変数percentは、0〜100の範囲の値で指定する必要があります。ここで指定する割合は、ブロックキャッシュに使用するキャッシュメモリのパーセンテージです。残りの割合がエントリキャッシュ用に使用されます。割合を0に設定することはお勧めできません。

  6. 変更は、eDirectoryサーバの再起動後に有効になります。


DSTRACEを使用して制限を設定する

eDirectory for NetWareを使用している場合、DSTRACEで動的調整制限とハードメモリ制限を設定できます。変更を有効にするために、サーバを再起動する必要はありません。

  1. (オプション) 固定バイト数のハードメモリ制限を設定するには、サーバコンソールで次のように入力します。

    SET DSTRACE=!MBamount_of_RAM_to_use_in_bytes

    たとえば、ハードメモリ制限を8MBに設定するには、次のように入力します。

    SET DSTRACE=!MB8388608

  2. (オプション) パーセンテージによって算出されるハードメモリ制限を設定するには、サーバコンソールで次のように入力します。指定するオプションのみを入力します。

    SET DSTRACE=!MHARD,AVAIL OR TOTAL,%:percent,MIN:number_of_bytes,MAX:number_of_ bytes,LEAVE:number_of_bytes_to_leave,NOSAVE

    たとえば、ハードメモリ制限を合計物理メモリの75%に設定し、最小値を16MBに設定して、これらのオプションをスタートアップファイルに保存しないように指定するには、次のように入力します。

    SET DSTRACE=!MHARD,%:75,MIN:16777216,NOSAVE

  3. (オプション) 動的調整制限を設定するには、サーバコンソールで次のように入力します。

    SET DSTRACE=!MDYN,%:percent,MIN:number_of_bytes,MAX:
    number_of_bytes,LEAVE:number_of_bytes_to_leave,
    NOSAVE

    たとえば、動的調整制限を使用可能メモリの75%に設定し、最小値を8GBに設定するには、次のように入力します。

    SET DSTRACE=!MDYN,%:75,MIN:8388608