eDirectoryのキャッシュを最適化する
Novell eDirectoryでは永続キャッシュを使用しているため、サーバに対して行われた変更はベクトルに保持されます。変更の途中でサーバがクラッシュした場合、サーバが稼働状態に戻ると、eDirectoryはより高速でロードして数秒間で変更を同期させます。Novell eDirectoryは、システムエラーが発生した場合、ロールバックモデルとログファイルを使用してトランザクションをロールフォワードします。
eDirectoryのキャッシュは最初16MBに設定され、その50%がブロックキャッシュに、残りの50%がレコードキャッシュに割り当てられます。15分後、eDirectoryはキャッシュのしきい値を変更し、キャッシュに使用可能な空きメモリの51%まで初期化できるようにしますが、少なくとも24MBはOS用に残します。このアルゴリズムは、使用可能な空きメモリ量を判別できるようにするコールをホストOSがサポートしている場合のみ使用されます。
eDirectoryキャッシュの最適化は、次の方法で行えます。
eDirectoryキャッシュの最適化の詳細については、eDirectoryのパフォーマンスの改善を参照してください。
LinuxシステムおよびUNIXシステムにおける固定量のRAM使用
上記のアルゴリズムはWindowsおよびNetWareでは有効ですが、LinuxシステムおよびUNIXシステムでは機能しません。LinuxシステムおよびUNIXシステムでは、OSによって報告される使用可能な空きメモリは、他のオペレーティングシステムよりも少なくなります。これは、Linux OSおよびUNIX OSがファイルシステムブロック、頻繁に実行するプログラム、ライブラリなどの内部キャッシング用に空きメモリを使用するためです。このメモリ割り当てに加え、通常、LinuxおよびUNIX上のライブラリは解放されたメモリをOSに戻しません。
このような理由で、キャッシュには固定量のRAMを割り当てることをお勧めします。
LinuxシステムおよびUNIXシステムで固定量のRAMを割り当てるには、次のいずれかの操作を行います。
手動で.iniファイルを作成する
-
eDirectoryデータベースファイル(DIBセット)が格納されたディレクトリ(通常、/var/opt/novell/eDirectory/data/dib)と同じディレクトリに、_ndsdb.iniという名前のファイルを作成します。
-
次に示すパラメータを、_ndsdb.iniフィアルに追加します。
blockcachepercent=50 |
データベースブロックのキャッシングに割り当てるキャッシュの割合を設定します。 |
cacheadjustinterval=15 |
eDirectoryが空きメモリの利用状況を評価し、全体のキャッシュサイズを調整する時間(秒)を設定します。 |
cachecleanupinterval=15 |
eDirectoryがダーティキャッシュブロックをディスクに書き込む時間(秒)を設定します。 |
cache=16777216 |
ハードメモリ制限(バイト数)を設定します。 |
Novell iMonitorを使用する
-
[エージェント環境設定]
をクリックします。
-
[データベースキャッシュ]をクリックし、次の情報を確認します。
最大サイズ |
指定したキャッシュが拡張できる最大サイズ(KB)です。 |
現在のサイズ |
指定したキャッシュの現在のサイズ(KB)です。 |
キャッシュされたアイテム |
指定したキャッシュ内のアイテム数です。 |
キャッシュされた古いバージョン |
指定したキャッシュ内の古いバージョンの数です。古いバージョンのキャッシュアイテムは、データベースの読み込みトランザクションの整合性を維持するために保持されます。つまり、あるスレッドが読み込みトランザクションを実行しており、別のスレッドが書き込みトランザクションを実行している場合、書き込みによって変更されるブロックの古いバージョンが読み込み操作のために保持されます。これは、読み込みのトランザクションを実行している間に変更処理が発生したとしても、読み込みの表示結果に整合性があるようにするためです。 |
古いバージョンのサイズ |
キャッシュされる古いバージョンのアイテムサイズ(KB)です。 |
ヒット |
指定したキャッシュ内のアイテムに正常にアクセスできた回数です。 |
ヒット表示 |
指定したキャッシュ内で、アイテムに正常にアクセスする前に参照されたアイテム数です。ヒット表示とヒットの比率が、キャッシュ検索効率の目安となります。通常、この比率はほぼ1:1になるようにします。 |
失敗 |
アイテムが指定したキャッシュ内に見つからず、低いレベルのキャッシュまたはディスクから取得されなければならなかった回数です。 |
失敗表示 |
必要なアイテムが指定したキャッシュ内にないと判断されるまでに、キャッシュ内で参照されたアイテムの数です。失敗表示と失敗の比率が、キャッシュ検索効率の目安となります。通常、この比率はほぼ1:1になるようにします。 |
-
次のオプションから選択します。
ダイナミック調整 |
eDirectoryデータベースのキャッシュに使用するシステムメモリの大きさを、必要と判断される大きさと、次に示すパラメータに基づいて動的に調整します。 |
キャッシュ調整パーセンテージ |
レコードキャッシュおよびブロックキャッシュに使用可能なメモリの割合です。 |
キャッシュサイズの制約条件 |
ダイナミック調整で、指定した制約条件に従います。つまり、キャッシュのメモリの大きさを指定した大きさより小さくせず、使用可能なメモリの合計から指定した大きさを引いた値より大きくしません。 |
ハードメモリ制限 |
キャッシュに使用するシステムメモリの正確な大きさです。 |
キャッシュ最大サイズ |
レコードキャッシュとブロックキャッシュを合わせたサイズ(KB)です。 |
ブロックキャッシュパーセンテージ |
ブロックキャッシュに割り当てられる使用可能なシステムメモリの割合です。残りの割合が、レコードキャッシュに割り当てられます。 |
キャッシュ調整間隔 |
この間隔は、ダイナミック調整を設定している場合のみ使用されます。調整間隔は、指定したパーセンテージと制約条件に基づき、どれくらいの頻度でキャッシュサイズを調整するかを制御します。 |
キャッシュクリーンアップ間隔 |
どれくらいの頻度で古い未使用のバージョンをキャッシュから削除するかを制御します。 |
永続的なキャッシュ設定 |
このオプションを選択すると、iMonitorを使用して送信した変更は、前に保存した設定やデフォルトのシステム設定に上書きされ、永続的な変更になります。 |
-
[送信]をクリックします。
キャッシュパラメータの設定
デフォルトでは、eDirectoryは動的キャッシュを使用します。eDirectoryのキャッシュサイズの増加に使用できる十分なRAMがある場合は、eDirectoryキャッシュへのRAMの割り当てを増加することによって、大容量データベースを使用する場合のeDirectoryのパフォーマンスを大幅に向上できます。
次の表に示すパラメータを調整すれば、eDirectoryのパフォーマンスを向上できます。
blockcachepercent=値 |
データベースブロックのキャッシングに割り当てるキャッシュの割合を設定します。デフォルトのポート番号は50です。 |
cachecleanupinterval=値 |
eDirectoryがダーティキャッシュブロックをディスクに書き込む時間(秒)を設定します。デフォルトのポート番号は15です。 |
cacheadjustinterval=値 |
eDirectoryが空きメモリの利用状況を評価し、全体のキャッシュサイズを調整する時間(秒)を設定します。デフォルトのポート番号は15です。 |
cache=値 |
eDirectoryがキャッシングに使用できるメモリのハード制限(バイト数)を設定します。 |
cache=leave:値 |
使用可能量として残しておく最小バイト数を指定します。 |
min:値 |
最小キャッシュサイズをバイト数で指定します。 |
max:値 |
最大キャッシュサイズをバイト数で指定します。 |
このアルゴリズムに従うと、Novell eDirectoryのデフォルト設定は次のようになります。
cache=dyn,%:51,min:16777216,max:0,leave:0
この設定は、次のことを示しています。
eDirectoryが合計メモリの割合を使用するように設定することもできます。これを行うには、次のようにキャッシュを指定します。
cache=hard,total,%:バイト単位での合計メモリのパーセンテージ
Novell eDirectory用にSolaris OSをチューニングする
次のセクションでは、Solarisのカーネル、ネットワーク、およびファイルシステムのチューニング方法について説明します。
重要: 最初に、推奨されているパッチをSolaris OSに適用済みであることを確認します。詳細については、『Novell eDirectory 8.8インストールガイド』の「Novell eDirectoryのSolarisへのインストールまたはアップグレード」を参照してください。
Solarisカーネルをチューニングする
Solaris上のeDirectoryパフォーマンスを最適化するには、/etc/systemファイルで次のカーネル変数を設定します。
set maxphys=1048576 |
1回のSCSI転送で転送できる最大バイト数です。 |
set md_maxphys=1048576 |
DiskSuite、vol_maxio、またはVxVMを使用している場合の、1回のSCSI転送で転送できる最大バイト数です。 |
set ufs:ufs_LW=使用可能なメモリの1/128 |
1つのファイルに対する未処理バイト数の境界値です。これを下回ると、他の処理が休眠状態となっている原因の条件変数が切り替えられます。 |
set ufs:ufs_HW=使用可能なメモリの1/64 |
1つのファイルの書き込み失敗境界値に対する未処理バイト数です。 |
ctcp:TCP接続ハッシュサイズ=8192 |
カーネルのデータ構造を検索するために割り当てられた、TCP接続に関連する接続ハッシュエントリの数です。(この数は、LDAPクライアントの数に応じて262144まで大きくできます)。 |
Solarisネットワークをチューニングする
LDAPの検索パフォーマンスは、Solarisのnddコマンドを使用して改善できます。次に示すコマンド構文を使用すれば、ネットワークの操作や動作に影響する、チューニング可能なパラメータを分析し、変更できます。
ndd -set /dev/tcp 変数名 変数の値
変数の推奨値を次の表に示します。
tcp_conn_req_max_q: 1024 |
「q」はキューを表します。これは完成されたソケットで、ペンを保持し、アプリケーションが受諾を発行するまでソケットは存続します。 |
tcp_time_wait_interval: 60000
|
待機間隔(ここでは小さな値)を設定します。 |
tcp_xmit_hiwat: 64000 tcp_xmit_lowat: 64000 |
TCPの最大および最小送信ウィンドウサイズを調整します。 |
tcp_slow_start_initial: 2 |
最初の転送パケット数を1から2に調整します。 |
Solarisファイルシステムを微調整する
Solarisファイルシステムが適切にチューニングされると、Solaris上のNovell eDirectoryのパフォーマンスが改善されます。特に、ディレクトリへデータをバルクロードする場合のパフォーマンスが非常に向上します。eDirectoryのファイルシステムチューニングは、データベースのチューニングと類似しています。Solarisファイルシステムの詳細については、Sunworld*のWebサイトを参照してください。