O eDirectory possui múltiplos threads por questões de desempenho. Em multi-threading, quando o sistema está ocupado, mais threads são criados para lidar com a carga e alguns são encerrados para evitar overhead extra. Criar e destruir threads frequentemente é custoso e ineficaz. Em vez de criar novos threads e destruí-los para cada tarefa, certos threads são iniciados e colocados em um pool. O sistema aloca os threads do pool de threads para diversas tarefas conforme necessário. As tarefas são separadas em dois tipos de filas:
Tarefas que precisam de programação imediata são mantidas na fila Prontas.
Tarefas que precisam de programação posterior são mantidas na fila Em espera.
Nem todos os módulos usam pool de threads. O número real de threads do processo é maior do que o número existente no pool de threads. Por exemplo, o FLAIM gerencia seus threads em segundo plano separadamente.
Executar o comando ndstrace -c threads exibe as seguintes estatísticas do pool de thread:
O número total de threads que são criados, encerrados e estão inativos.
O número total de threads de trabalho atuais e o número máximo de threads de trabalho.
O número de tarefas e número máximo de tarefas na fila Prontas.
O número mínimo, máximo e médio de microssegundos transcorridos na fila Prontas.
O número atual e máximo de tarefas na fila Em espera.
Um exemplo de uma amostra do pool de thread:
Existem certos parâmetros do pool de thread:
n4u.server.max-threads: O número máximo de threads que podem ficar disponíveis no pool.
n4u.server.idle-threads: O número máximo de threads inativos que podem ficar disponíveis no pool.
n4u.server.start-threads: Número de threads iniciados.
Execute os comandos ndsconfig get e ndsconfig set para obter e definir o tamanho do pool de thread.