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

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

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

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

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

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


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

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

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


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

eDirectoryには、キャッシュメモリの使用量を制御する方法として、動的調整制限とハードメモリ制限の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.8では、バックグラウンドプロセスにより定期的にキャッシュがブラウズされ、古いバージョンが消去されます。これにより、キャッシュメモリの消費量が最小限に抑えられます。デフォルトのブラウズ間隔は15秒です。


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

動的調整制限およびハードメモリ制限は、次のいずれかの方法で設定できます。


Novell iMonitorを使用する
  1. [エージェント環境設定][エージェント環境設定]ボタンをクリックします。

  2. [データベースキャッシュ]をクリックし、次の情報を確認します。

    データベースキャッシュ情報 説明

    最大サイズ

    指定したキャッシュが拡張できる最大サイズ(KB)です。

    現在のサイズ

    指定したキャッシュの現在のサイズ(KB)です。

    キャッシュされたアイテム

    指定したキャッシュ内のアイテム数です。

    キャッシュされた古いバージョン

    指定したキャッシュ内の古いバージョンの数です。古いバージョンのキャッシュアイテムは、データベースの読み込みトランザクションの整合性を維持するために保持されます。つまり、あるスレッドが読み込みトランザクションを実行しており、別のスレッドが書き込みトランザクションを実行している場合、書き込みによって変更されるブロックの古いバージョンが読み込み操作のために保持されます。これは、読み込みのトランザクションを実行している間に変更処理が発生したとしても、読み込みの表示結果に整合性があるようにするためです。

    古いバージョンのサイズ

    キャッシュされる古いバージョンのアイテムサイズ(KB)です。

    ヒット

    指定したキャッシュ内のアイテムに正常にアクセスできた回数です。

    ヒット表示

    指定したキャッシュ内で、アイテムに正常にアクセスする前に参照されたアイテム数です。ヒット表示とヒットの比率が、キャッシュ検索効率の目安となります。通常、この比率はほぼ1:1になるようにします。

    失敗

    アイテムが指定したキャッシュ内に見つからず、低いレベルのキャッシュまたはディスクから取得されなければならなかった回数です。

    失敗表示

    必要なアイテムが指定したキャッシュ内にないと判断されるまでに、キャッシュ内で参照されたアイテムの数です。失敗表示と失敗の比率が、キャッシュ検索効率の目安となります。通常、この比率はほぼ1:1になるようにします。

  3. 次のオプションから選択します。

    オプション 説明

    ダイナミック調整

    eDirectoryデータベースのキャッシュに使用するシステムメモリの大きさを、必要と判断される大きさと、次に示すパラメータに基づいて動的に調整します。

    キャッシュ調整パーセンテージ

    レコードキャッシュおよびブロックキャッシュに使用可能なメモリの割合です。

    キャッシュサイズの制約条件

    ダイナミック調整で、指定した制約条件に従います。つまり、キャッシュのメモリの大きさを指定した大きさより小さくせず、使用可能なメモリの合計から指定した大きさを引いた値より大きくしません。

    ハードメモリ制限

    キャッシュに使用するシステムメモリの正確な大きさです。

    キャッシュ最大サイズ

    レコードキャッシュとブロックキャッシュを合わせたサイズ(KB)です。

    ブロックキャッシュパーセンテージ

    ブロックキャッシュに割り当てられる使用可能なシステムメモリの割合です。残りの割合が、レコードキャッシュに割り当てられます。

    キャッシュ調整間隔

    この間隔は、ダイナミック調整を設定している場合のみ使用されます。調整間隔は、指定したパーセンテージと制約条件に基づき、どれくらいの頻度でキャッシュサイズを調整するかを制御します。

    キャッシュクリーンアップ間隔

    どれくらいの頻度で古い未使用のバージョンをキャッシュから削除するかを制御します。

    永続的なキャッシュ設定

    このオプションを選択すると、iMonitorを使用して送信した変更は、前に保存した設定やデフォルトのシステム設定に上書きされ、永続的な変更になります。

  4. [送信]をクリックします。


_ndsdb.iniファイルの使用
  1. _ndsdb.iniをテキストエディタで開きます。

    NetWare(R)では、このファイルはsys:\netwareにあります。通常、Windows NTおよびWindows 2000では、このファイルは\Novell\NDS\DIBfilesにあります。

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

    コマンド 変数の説明 定義

    cache=キャッシュバイト

    使用する固定バイト数

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

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

    cache=8000000

    cache=キャッシュオプション

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

    • DYN

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

    • HARD

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

    • %:パーセンテージ

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

    • AVAILまたはTOTAL

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

    • MIN:バイト数

      最小バイト数。

    • MAX:バイト数

      最大バイト数。

    • LEAVE:バイト数

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

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

    たとえば、動的調整制限で使用可能メモリを75%に設定し、最小バイト数を16MBに設定するには、次のように入力します。

    cache=DYN, %:75,MIN:16000000

    また、ハードメモリ制限で合計物理メモリの75%を設定し、最小バイト数を16MBに設定するには、次のように入力します。

    cache=HARD,%:75,MIN: 16000000

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

    cacheadjustinterval=秒数

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

    cachecleanupinterval=秒数

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

    blockcachepercent=パーセント

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

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


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

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

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

    SET DSTRACE=!MBバイト単位でのRAMの使用量

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

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

    SET DSTRACE=!MHARD,AVAIL OR TOTAL,%:パーセント,MIN:バイト数,MAX:バイト数,LEAVE:残すバイト数,NOSAVE

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

    SET DSTRACE=!MHARD,%:75,MIN:16777216,NOSAVE
  3. (オプション)動的調整制限を設定するには、サーバコンソールで次のように入力します。

    SET DSTRACE=!MDYN,%:パーセント,MIN:バイト数,MAX:
    バイト数,LEAVE:残すバイト数,
    NOSAVE

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

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


LDAP for eDirectoryをチューニングする

基本的なLDAPサーバのハードウェアとソフトウェア設定、チューニングパラメータ、およびディレクトリ編成のヒントについての詳細は、「How to Configure and Optimize eDirectory LDAP Servers(LDAPサーバを環境設定および最適化する方法)」を参照してください。


メモリを管理する

eDirectoryは、データベースキャッシュとディレクトリのためにメモリを使用します。これらはメモリプールとしてそれぞれに割り当てられます。ディレクトリエンジンは、オペレーティングシステムで利用できるメモリプールから必要なメモリを取り込んで使用します。データベースは、次に詳しく説明するパラメータにより定義されたキャッシュプールを使用します。一般に、eDirectoryに割り当てるデータベースキャッシュの量が多いほどパフォーマンスはよくなります。ただし、eDirectoryはバッファにシステムメモリを使用するため、クライアントがクエリを実行し、そのクエリが大量のデータを戻す場合には、ディレクトリで大量のクエリ応答を行えるように、データベースキャッシュのサイズを小さくして、システムメモリを確保しなければならない場合もあります。

データベースエンジンは、データベースキャッシュを使用して、最近アクセスしたブロックを保持します。このキャッシュの初期定義サイズは固定値で16MBです。このキャッシュのサイズは、出荷バージョンのeDirectoryでコマンドラインから変更できます。次の例は、eDirectoryデータベースキャッシュのサイズを80MBに設定するコマンドです。

set dstrace=!mb 80000000

あるいは、NetWareサーバ上のSYS:\_netwareディレクトリまたはWindowsやUNIXの環境におけるeDirectoryデータベースファイルが格納されたディレクトリ(Windowsでは通常、インストールディレクトリ\nds\dbfiles、LinuxおよびUNIXでは通常、\var\nds\dib)に_ndsdb.iniという名前のファイルを定義することもできます。このテキストファイルに、次のような行を設定するだけです。

cache=80000000

等号(=)の前後にスペースは入れないでください。

eDirectory 8.8のキャッシュは、以前のバージョンと同様に、ハード制限値に基づいて初期化できます。さらに、上限と下限はハード値で設定できるほか、使用可能なメモリの割合でも設定できます。動的割り当て用の制御パラメータを使用すれば、キャッシュサイズを使用状態に応じて増減させることができます。適切なパラメータを設定すれば、データベースキャッシュは他のシステムリソースからの要求に応じて、そのサイズを増減させます。

_ndsdb.iniファイルを変更することにより、データベースメモリの使用を手動で制御できます。INIファイルコマンドの形式は次のとおりです。

cache=キャッシュのバイト数 # Set a hard memory limit

他の形式を次の表に示します。

コマンド 説明

cache=キャッシュオプション

ハードメモリ制限または動的調整制限を設定します。複数のキャッシュオプションをコンマで区切り、任意の順序で指定できます。これらはいずれも必須ではありません。キャッシュオプションを次に示します。

DYNまたはHARD

動的制限またはハードメモリ制限。

AVAILまたはTOTAL

ハードメモリ制限が選択された場合にのみ有効です。動的調整制限の場合は、これらのオプションは省略します。

%:パーセンテージ

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

MIN:バイト数

最小バイト数。

MAX:バイト数

最大バイト数。

LEAVE:バイト数

OS用として残す最小バイト数。

blockcachepercent=パーセンテージ

キャッシュをブロックキャッシュおよびレコードキャッシュに分離します。

ハードメモリ制限が指定された状態で、メモリの割合としてデータベースキャッシュを定義する場合、管理者は、合計メモリの割合または使用可能なメモリの割合のいずれかを選択できます。動的制限の場合には、必ず利用可能なメモリが基準になります。次に示すコマンド例はすべて、_ndsdb.iniファイルで使用できます。

次の例では、動的制限を使用可能なメモリの75%、最小バイト数を16MB、OS用に残すバイト数を32MBと設定しています。

cache=DYN,%:75,MIN:16000000, LEAVE 32000000

次の例では、ハードメモリ制限を合計物理メモリの75%、最小バイト数を18MB、最大バイト数を512MBと設定しています。

cache=HARD, TOTAL,%:75,MIN:18000000, MAX 512000000

次の例は古いスタイルのコマンドで、ハードメモリ制限を8MBに設定しています。

cache=8000000

データベースキャッシュは、ブロックキャッシュとレコードキャッシュに配分されます。ブロックキャッシュには、ディスクに格納されたデータのミラーとして、データブロックとインデックスブロックが保持されます。レコードキャッシュには、メモリに展開された形でのディレクトリオブジェクトと属性が保持されます。ディレクトリへの追加や更新では、ブロックキャッシュの設定が使用されます。大半の処理が読み込みの場合には、レコードキャッシュが使用されます。適切なサイズのキャッシュを割り当てないで多数の順次更新処理を実行すると、両方のキャッシュにスラッシュ状態を招くことがあります。指定によって変更しない場合、キャッシュの50%がブロックキャッシュに、50%がレコードキャッシュに割り当てられます。blockcachepercentオプションを_ndsdb.iniファイルに追加することにより、データブロックとインデックスブロックに割り当てるキャッシュの比率を指定できます(デフォルトは50%です)。残りのキャッシュ領域はエントリに使用されます。

たとえば、60%をブロックキャッシュに、40%をレコードキャッシュにするには、次のように入力します。

blockcachepercent=60

どちらかのキャッシュを100%に設定して、他方のキャッシュが使用できないようにすることは避けてください。通常、一方のキャッシュに75%以上は設定しないようにしてください。

データベースキャッシュの設定はNovell iMonitorを使用して制御することもできます。

キャッシュサイズは使用できるメモリの量により動的に変動しますが、カスタム環境用にDSTRACEコマンドを使用することは可能です。