O eDirectory possui múltiplas threads por questões de desempenho. Em multi-threading, quando o sistema está ocupado, mais threads são criadas para lidar com a carga e algumas são encerradas para evitar overhead extra. Criar e destruir threads frequentemente é custoso e ineficaz. Em vez de criar novas threads e destruí-las para cada tarefa, certas threads são iniciadas e colocadas em um pool. O sistema aloca as 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, FLAIM gerencia suas 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 criadas, encerradas e estão inativas.
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 inativas que podem ficar disponíveis no pool.
n4u.server.start-threads: Número de threads iniciadas.
Execute os comandos ndsconfig get e ndsconfig set para obter e definir o tamanho do pool de thread.