2.2 スレッドプール

eDirectoryはパフォーマンスの理由でマルチスレッドになっています。マルチスレッドでは、システムがビジーの場合、負荷に対応するためより多くのスレッドが作成され、余分なオーバーヘッドを避けるためにいくつかのスレッドが終了されます。スレッドを頻繁に作成したり破棄したりするのは非効率で高くつきます。タスクごとに新しいスレッドを生成し破棄するのではなく、多くのスレッドが開始されプールに置かれます。システムは、必要に応じてスレッドプールからスレッドをタスクに対して割り当てます。タスクは2種類のキューに保持されています:

すべてのモジュールがスレッドキューを使用するわけではありません。プロセスに対するスレッドの実際の数は、スレッドプールに存在する数よりも多くなります。たとえば、FLAIMは自身のバックグラウンドスレッドを単独で管理します。

ndstrace -c threadsコマンドを実行すると、次のスレッドプールに関する統計が返されます。

サンプルスレッドプールの例:

特定のスレッドプールパラメータがあります。

ndsconfig getおよびndsconfig setコマンドを実行し、スレッドプールのサイズを取得し設定します。