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 |
使用する利用可能な物理 |
|
最大しきい値 |
10MBを使用可能量として維持する |
eDirectoryがキャッシュ制限を調整するときに、使用可能な物理メモリが16MBあるとします。eDirectoryは、新しい制限値を12MBとして算出します。eDirectoryは、算出した新しい制限値が最小しきい値と最大しきい値の範囲内にあるかをチェックします。この例では、最大しきい値の設定により10MBを使用可能量として残しておく必要があるため、eDirectoryは制限値を6MBに設定します。しかし、最小しきい値は8MBであるため、eDirectoryは最終的に制限値を8MBに設定します。
動的調整制限では、間隔の長さも指定します。デフォルトの間隔は15秒です。間隔が短いほど、より最新の状態に基づいてメモリが使用されます。ただし、割合の再計算によりメモリの割り当てと解放が発生するため、必ずしも間隔が短いほど良いわけではありません。
ハードメモリ制限は、eDirectoryの以前のバージョンで、メモリ消費を制御するために使用されている方法です。次のいずれかの方法でハードメモリ制限を設定します。
その期間の物理メモリの割合が、固定バイト数になります。
その期間の使用可能な物理メモリの割合が、固定バイト数になります。
NDS 8はトランザクションの整合性を維持するために、キャッシュ内に複数のバージョンのブロックとエントリを作成します。NDS 8の以前のバージョンでは、これらのブロックやエントリは不要になっても削除されませんでした。eDirectory 8.8では、バックグラウンドプロセスにより定期的にキャッシュがブラウズされ、古いバージョンが消去されます。これにより、キャッシュメモリの消費量が最小限に抑えられます。デフォルトのブラウズ間隔は15秒です。
動的調整制限およびハードメモリ制限は、次のいずれかの方法で設定できます。
[エージェント環境設定]をクリックします。
[データベースキャッシュ]をクリックし、次の情報を確認します。
次のオプションから選択します。
[送信]をクリックします。
_ndsdb.iniをテキストエディタで開きます。
NetWare(R)では、このファイルはsys:\netwareにあります。通常、Windows NTおよびWindows 2000では、このファイルは\Novell\NDS\DIBfilesにあります。
ファイルに該当する構文を追加します。
(オプション)動的調整制限の間隔を指定するには、次の行を追加します。
cacheadjustinterval=秒数
(オプション)エントリとブロックの古いバージョンをクリーンアップする間隔を指定するには、次の行を追加します。
cachecleanupinterval=秒数
(オプション)ブロックキャッシュとエントリキャッシュでのメモリ配分の割合を変更するには、次の行を追加します。
blockcachepercent=パーセント
変数「パーセント」は、0〜100の範囲で指定する必要があります。ここで指定する割合は、ブロックキャッシュに使用するキャッシュメモリのパーセンテージです。残りの割合がエントリキャッシュ用に使用されます。割合を0に設定することはお勧めできません。
変更は、eDirectoryサーバの再起動後に有効になります。
eDirectory for NetWareを使用している場合、DSTraceで動的調整制限やハードメモリ制限を設定できます。変更を有効にするために、サーバを再起動する必要はありません。
(オプション)固定バイト数のハードメモリ制限を設定するには、サーバコンソールで次のように入力します。
SET DSTRACE=!MBバイト単位でのRAMの使用量
たとえば、8MBのハードメモリ制限を設定するには、次のように入力します。
SET DSTRACE=!MB8388608
(オプション)パーセンテージによって算出されるハードメモリ制限を設定するには、サーバコンソールで次のように入力します。オプションは、指定するものだけを入力します。
SET DSTRACE=!MHARD,AVAIL OR TOTAL,%:パーセント,MIN:バイト数,MAX:バイト数,LEAVE:残すバイト数,NOSAVE
たとえば、ハードメモリ制限で合計物理メモリの75%を設定し、最小バイト数を16MBに設定して、これらのオプションをスタートアップファイルに保存しないように指定するには、次のように入力します。
SET DSTRACE=!MHARD,%:75,MIN:16777216,NOSAVE
(オプション)動的調整制限を設定するには、サーバコンソールで次のように入力します。
SET DSTRACE=!MDYN,%:パーセント,MIN:バイト数,MAX:
バイト数,LEAVE:残すバイト数,
NOSAVE
たとえば、動的調整制限で使用可能メモリの75%を設定し、最小値を8MBに設定するには、次のように入力します。
SET DSTRACE=!MDYN,%:75,MIN:8388608
基本的な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
他の形式を次の表に示します。
ハードメモリ制限が指定された状態で、メモリの割合としてデータベースキャッシュを定義する場合、管理者は、合計メモリの割合または使用可能なメモリの割合のいずれかを選択できます。動的制限の場合には、必ず利用可能なメモリが基準になります。次に示すコマンド例はすべて、_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コマンドを使用することは可能です。